繁体   English   中英

如何使用ggplot2将单个比例添加到堆叠的条形图中?

[英]How to add individual proportions to a stacked bar graph using ggplot2?

我目前正在基于称为“ esoph”的数据集(IIRC在R中可用,但已将其移至CSV)编写报告,并且由于对ggplot2的有限经验,我能够创建一些不错的图形。 我想创建一个比例堆积的条形图(所有条形之和为1),但是我成功了,但是我找不到一种将各个比例插入每个条形图的方法。

这是一个有效的示例(在我的实际代码中,这有点不同,带有葡萄牙语标签,但这很好用):

require(stats)
library(ggplot2)

data <- esoph

g <- ggplot(data, aes(x = ncases, fill = tobgp)) +
     geom_bar(position = 'fill') + 
     scale_fill_brewer() + 
     xlab("Number of cancer occurences") + 
     ylab("Proportions for each group") +                   
     guides(fill=guide_legend(title="Alcohol ingestion (g/day)"))

g

生成此图:

img

我读过,最好是计算比例,然后将其输入ggplot,但是我还不太清楚如何做到这一点。

要计算比例,可以在espoh数据框中添加两列。 基本上,添加一列,其总价值为ncases。 如果您正在使用library(data.table) ,它将是这样的:

espoh[,.(total=sum(tobgp)),by=ncases]

然后计算分数为:

espoh[,fraction:=tobgp/total]

使用geom_text功能在堆叠图上添加标签:

+ geom_text(aes( x=ncases, y=tobgp, label=fraction, position=position_stack(vjust=0.5), colour="black")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM