R:在ggplot geom_bar fill中将百分比写为标签

时间:2016-10-01 17:18:32

标签: r ggplot2 labels

这可能是一个简单的问题。 我有大量临床数据称为d。

     head(d[,c("catCRP","ageCat")])
      catCRP  ageCat
    1     <4 (50,66]
    2     >4 (40,50]
    3     >4 (30,40]
    4     <4 (50,66]
    5     >4 (30,40]
    6     >4 (30,40]

我正在用ggplot2绘图:

ggplot(d,aes(x=ageCat,fill=catCRP))+geom_bar(position="fill")

在这种情况下,ggplot会绘制每个类别中的百分比。

是否可以将百分比数字和实际数量添加到图表中?

我是初学者,我查看了所有文档,但我没有找到答案。

1 个答案:

答案 0 :(得分:0)

library(ggplot2)
library(dplyr)

d <- data.frame(ageCat = rep(1:5, each=20)
                ,catCRP = rep(1:5,20))

p <- d %>% group_by(ageCat, catCRP) %>% summarise(n = n()) %>%
 mutate(p = n/sum(n))

p1 <- ggplot(p,aes(x=ageCat,y=p, fill=catCRP))+geom_bar(stat = "identity", position="fill") + theme_bw() 
p1 + geom_text(aes(label = paste0(n," (",p*100,"%)")), size = 3, hjust = 0.5, vjust = 3, position =     "stack")