如何使用 ggplot geom_bar 显示堆叠列中的百分比?

Hye*_*ong 3 r ggplot2 geom-bar

我正在尝试在堆积条形图中添加百分比标签。我可以在 geom_bar 中添加什么来显示堆积条形图内的百分比标签?

这是我的数据:

myresults=data.frame(
    manipulation=rep(c(-20,-10,0,10,20,-20,-10,0,10,20,-20,-10,0,10,20)),
    variable=rep(c("a","a","a","a","a","f","f","f","f","f","l","l","l","l","l")),
    value=c(73,83,76,75,78,261,301,344,451,599,866,816,780,674,523))
Run Code Online (Sandbox Code Playgroud)

这是我的条形图,没有百分比标签。

我对此了解甚少。我用谷歌搜索“gglot stacked bar百分比标签”,发现添加百分比标签可以用“+ geom_text(stat=”count”)”来完成。

但是当我将 + geom_text(stat="count") 添加到我的 ggplot geom_bar 时,R 说“错误:stat_count() 不得与 ay 美学一起使用。” 我试图弄清楚什么是审美,但不太成功。

这就是我所做的:

mydata <- ggplot(myresults, aes(x=manipulation, y=value, fill=variable))

mydata + geom_bar(stat="identity", position="fill", colour="black") + scale_fill_grey() + scale_y_continuous(labels=scales::percent) + theme_bw(base_family="Cambria") + labs(x="Manipulation", y=NULL, fill="Result") + theme(legend.direction="vertical", legend.position="right")
Run Code Online (Sandbox Code Playgroud)

Stu*_*olf 6

您可以执行与以下中接受的答案类似的操作: Adding Percentage labels to a bar Chart in ggplot2。主要区别在于您的值是堆积起来的(“堆叠”),而在该示例中它是并排的(“躲避”)

制作一列百分比:

myresults_pct <- myresults %>% 
group_by(manipulation) %>% 
mutate(pct=prop.table(value))
Run Code Online (Sandbox Code Playgroud)

现在我们绘制这个:

    ggplot(myresults_pct, 
aes(x=manipulation, y=pct,fill=variable)) + 
geom_col()+
scale_fill_grey()+
geom_text(aes(label = scales::percent(pct)),
position="stack",vjust=+2.1,col="firebrick",size=3)+
scale_y_continuous(label = scales::percent)
Run Code Online (Sandbox Code Playgroud)

geom_text 中的重要参数是position="stacked",并使用 vjust 来上下移动标签。(我提前为糟糕的文字颜色道歉......)。

在此输入图像描述