在ggplot2中的堆积条形图上方显示每个组的总值(总和)。

8

我使用这段代码制作了以下堆叠条形图:

library(ggplot2)
library(dplyr)

Year      <- c(rep(c("2006", "2007", "2008", "2009"), each = 4))
Category  <- c(rep(c("A", "B", "C", "D"), times = 4))
Frequency <- c(168, 259, 226, 340, 216, 431, 319, 368, 423, 645, 234, 685, 166, 467, 274, 251)
Data      <- data.frame(Year, Category, Frequency)

Data2 <-Data%>%
  group_by(Year, Category)%>%
    summarise(Sum_grp = sum(Frequency))

Data3 <-transform(Data2, Pos = ave(Frequency, Year, FUN = cumsum) - Frequency / 2)

ggplot(Data3, aes(Year, Frequency, group=Category,fill = Category))+
  geom_bar(stat="identity")+
  geom_text(aes(label = Frequency,y=Pos), size = 3) 

enter image description here

现在,我想在每个柱形图的顶部添加每组的总和,但我不知道该怎么做。

有人能帮帮我吗?

非常感谢!!!!

1个回答

19

如果您想避免创建第三个汇总数据集,可以使用 stat_summary

ggplot(Data3, aes(Year, Frequency, group = Category, fill = Category))+
    geom_bar(stat="identity")+
    geom_text(aes(label = Frequency,y=Pos), size = 3)  +
    stat_summary(fun.y = sum, aes(label = ..y.., group = Year), geom = "text")

enter image description here

如果需要的话,使用vjust将标签上移更多。我发现vjust = -.2看起来相当不错。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接