如何在不创建摘要数据框的情况下在ggplot2中标记堆积条形图?

Far*_*rel 3 label r bar-chart ggplot2

以下代码提供了精美的堆积条形图

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()
Run Code Online (Sandbox Code Playgroud)

我期待使用geom_text或stat_summary,我可以在每个组中标记为负数的百分比,并将其放在相应的栏上.我尝试了许多排列,无法让它发挥作用.我甚至尝试手动输入百分比并强制标签在我想要的地方,但它不起作用.它需要80个标签,而我只想给出4个负数或者8个(如果一个包含百分比标签为正数).

我真的必须制作我的syrclia的聚合数据框并绘制该图吗?

Luc*_*zer 7

geom_barstat_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,"%")))
Run Code Online (Sandbox Code Playgroud)

HTH 在此输入图像描述