以下代码提供了精彩的堆积条形图
cls.grp <- gl(n=4,k=20,labels=c("group a","group b","group c", "group d"))
ser <- sample(x=c("neg","pos"),size=80,replace=TRUE, prob=c(30,70))
syrclia <- data.frame(cls.grp,ser)
ggplot(syrclia, aes(cls.grp, fill=ser))+ geom_bar()
我期待使用geom_text或stat_summary,我可以在每个组中标记为负数的百分比,并将其放在相应的栏上。我尝试了许多排列,无法让它发挥作用。我甚至尝试手动输入百分比并强制标签在我想要的地方,但它不起作用。它需要80个标签,而我只想给出4个负数或者8个(如果一个包含正数百分比的标签)。
我真的必须制作我的syrclia的聚合数据框并绘制出来吗?
答案 0 :(得分:7)
geom_bar
默认使用stat_bin
。因此,您应该使用stat_bin
绘制数字,告诉它使用geom_text
并使用新生成的..count..
作为标签。
cls.grp <- gl(n=4,k=20,labels=c("group a","group b","group c", "group d"))
ser <- sample(x=c("neg","pos"),size=80,replace=TRUE, prob=c(30,70))
syrclia <- data.frame(cls.grp,ser)
library(ggplot2)
total <- ddply(syrclia, .(cls.grp), function(x) nrow(x))[, 2]
ggplot(syrclia, aes(cls.grp, fill=ser))+ geom_bar() +
stat_bin(geom = "text",
aes(label = paste(
..count../get("total", envir = .GlobalEnv)*100,"%")))
HTH