首页 > 解决方案 > ggplot中带有单列的堆叠条形图?

问题描述

我想创建一个堆叠的条形图,但我很难让我正确。我想在蓝色条的顶部(即前面)添加绿色和红色条。蓝色条代表一些总数;因此,红色和绿色条只是该值的一部分。有什么想法我该怎么做?

这是我目前的数字

这是我的代码:

sse <- c(3243.784, 2527.5, 716.3)
model <- c('sst', 'ssm', 'ssr')


bar <- tibble(sse, model)

ggplot(bar, aes(x = model, y = sse, fill = model)) +
  geom_col() 

标签: rggplot2

解决方案


由于蓝色条表示总值(即红色和绿色条的总和),我认为您可以只显示红色和绿色,同时在堆积条形图上显示数据值。这样就不会混淆,可以同时显示“ssm”、“ssr”和“sst”的值。

这是您可以使用的代码:

library(tibble)
library(ggplot2)
sse <- c(2527.5, 716.3)
model <- c('ssm', 'ssr')
value <- c('sst')

bar <- tibble(sse, model, value)

ggplot(bar, aes(x = value, y = sse, fill = sse, label = sse)) +
  geom_bar(position = "stack", stat = "identity", width = .3) +
  geom_text(size = 3, position = position_stack(vjust = 0.5))

我添加了一个名为 value 的新变量,它代表“sst”。

另外,我使用 geom_bar 而不是 geom_col 因为它对可视化效果更好。

最后,我使用 geom_text 将数据值添加到堆叠条。

这是它的样子:

带有数据值的堆积条形图


推荐阅读