ggplot2:原始数据的条形图,其中聚集的框架

时间:2019-06-14 13:05:37

标签: r ggplot2 geom-bar

我正在尝试从原始数据创建一个堆叠的条形图,其中每组因子变量可能都有多个条目,并且y值应为所有此类条目的总和。首先执行普通的geom_bar看起来不错,但似乎将每个原始条目都绘制为一个相互堆叠的单独矩形。看起来不错,直到您要在条形图的每个部分周围画一个框架:

library(tidyverse)
data = tibble(
    age = factor(c(2, 3, 3, 3, 2, 2)),
    value = c(30, 5, 15, 14, 29, 9)
)
ggplot(data, aes(x = "Observation", y = value, fill = age)) +
    geom_bar(stat = "identity", colour = "black")

enter image description here

我实际上想要的是围绕绿松石的一帧和围绕红色部分的一个矩形。如何直接用ggplot做到这一点?

当然,可以手动调用摘要:

ggplot(data %>% group_by(age) %>% summarize(value = sum(value)), 
  aes(x = "Observation", y = value, fill = age)) +
  geom_bar(stat = "identity", colour = "black")

enter image description here 但这需要针对每个不同的轴变量选择进行调整,这很痛苦,因为我正在处理约15个因子维度,并且必须创建数十个图表,每个轴的因子变量都不同(包括facet_grid )。

因此,理想情况下,ggplot / geom_bar将自动进行汇总,然后绘制汇总值,而不是分别绘制每个单独的条目。 这可能吗?

1 个答案:

答案 0 :(得分:3)

stat_summary()可以即时处理这些类型的摘要。

您只需指定几何图形和要汇总的功能。在这里,我们还需要明确地说要堆叠这些条以防止重叠。

ggplot(data, aes(x = "Observation", y = value, fill = age,)) +
  stat_summary(geom = "bar", fun.y = "sum", position = "stack")

enter image description here