使用ggplot在R中创建堆叠百分比条形图

5
我一直在寻找一种方法,能够显示受访者性别分类的堆积条形图响应的百分比值。
我成功地使用变量“sex”来创建了一个堆积条形图,但是我希望该图显示此变量之间的比例。我知道使用(..count..)/ sum(..count)和scale_y可以更改y轴,以便显示百分比,但我找不到适用于我想要的方法。手动创建反映百分比的频率值[编辑]的单独数据框也是可能的,但我非常渴望只使用ggplot找到一种方法。 这就是当前的图表样子: 这是当前的代码:
workday<-ggplot(student,aes(x=Dalc2,fill=sex))
plot1<-workday+geom_bar()+facet_wrap(~romantic2)+labs(title="Workday Alcohol Consumption",y="Number of Respondents",x="Response")+ylim(0,300)

我知道这是一个相当基础的问题,但任何关于它的启示都将不胜感激。

(数据集来自uci.edu)

编辑:

对于那些对解决方案感兴趣的人,r.bot(万分感谢!)建议使用geom_bar(position="fill")

还要添加这个来修改y轴:scale_y_continuous(labels=percent)

这就是最终的图像

1个回答

10

ggplot的在线文档中有一个很好的将条形图堆叠到100%的示例。由于您没有提供数据,因此我无法调整您的代码。例如,请参见

# http://docs.ggplot2.org/current/geom_bar.html
require(ggplot2)

g <- ggplot(mpg, aes(class))
g + geom_bar(aes(fill = drv), position = "fill")

position = "fill"可以让你得到你想要的。


我简直不敢相信,在经过数小时的搜索后,我错过了那个答案。非常感谢,它像魔法一样奏效! - dizzygirl

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