R:ggplot堆叠的条形图,y轴上有计数,但百分比为标签

乔安娜

我正在寻找一种用百分比标记堆积条形图的方法,而y轴显示原始计数(使用ggplot)。这是不带标签的情节的MWE:

library(ggplot2)
df <- as.data.frame(matrix(nrow = 7, ncol= 3,
                       data = c("ID1", "ID2", "ID3", "ID4", "ID5", "ID6", "ID7",
                                "north", "north", "north", "north", "south", "south", "south",
                                "A", "B", "B", "C", "A", "A", "C"),
                      byrow = FALSE))

colnames(df) <- c("ID", "region", "species")

p <- ggplot(df, aes(x = region, fill = species))
p  + geom_bar()

我的桌子要大得多,R很好地统计了每个地区的不同物种。现在,我想同时显示原始计数值(最好在y轴上)和百分比(作为标签),以比较区域之间物种的比例。

我尝试了许多方法,geom_text()但是我认为与其他问题(例如,这个问题的主要区别在于

  • 我没有单独的列用于y值(它们只是每个区域中不同物种的计数),并且
  • 我需要每个区域的标签总计达100%(因为它们被认为代表了不同的种群),而不是整个地块的所有标签。

任何帮助深表感谢!!

eipi10

如@Gregor所述,分别汇总数据,然后将数据摘要输入ggplot。在下面的代码中,我们用于动态dplyr创建摘要:

library(dplyr)

ggplot(df %>% count(region, species) %>%    # Group by region and species, then count number in each group
         mutate(pct=n/sum(n),               # Calculate percent within each region
                ypos = cumsum(n) - 0.5*n),  # Calculate label positions
       aes(region, n, fill=species)) +
  geom_bar(stat="identity") +
  geom_text(aes(label=paste0(sprintf("%1.1f", pct*100),"%"), y=ypos))

在此处输入图片说明

更新:使用dplyr0.5及更高版本时,您不再需要提供y值以使文本在每个小节内居中。相反,您可以使用position_stack(vjust=0.5)

ggplot(df %>% count(region, species) %>%    # Group by region and species, then count number in each group
         mutate(pct=n/sum(n)),              # Calculate percent within each region
       aes(region, n, fill=species)) +
  geom_bar(stat="identity") +
  geom_text(aes(label=paste0(sprintf("%1.1f", pct*100),"%")), 
            position=position_stack(vjust=0.5))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何创建频率堆叠的条形图,但是条形图上的百分比标签和y轴上的频率在R中?

堆叠的ggplot百分比条形图在闪亮

将百分比标签添加到堆叠的条形图ggplot2

R堆叠百分比条形图,带有二元因子和标签的百分比

在带有双Y轴的堆叠条形图中显示数字和百分比

使用堆积条形图的 y 轴标签进行计算(*4 或百分比)

ggplot2中条形图的计数和百分比如何?[R

按y连续值订购堆叠的ggplot2百分比条形图-重新过帐

ggplot2 R:具有多个变量的百分比堆积条形图

向堆叠条形图添加百分比标签

如何计算和绘制堆叠条形图的百分比标签以及条形图的总数?

用 R ggplot2 中的百分比从头开始分类变量的堆叠条形图

条形图 - 堆叠的 ggplot 百分比条形图起始值不是 0%

具有 50 多个创建的虚拟变量的堆叠条形图(百分比)?

如何在“计数条形图”上添加百分比标签

用ggplot获取带有百分比标签的条形图的最有效方法

ggplot条形图百分比组

Python条形图y轴显示百分比

R带有ggplot的两个因子变量的百分比的堆积百分比条形图

Excel Pivot带有百分比和条形图计数

总与部分的条形图,百分比 (R)

带有groupby和条形图的python百分比标签

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

在R中计算百分比并制作ggplot条形图

R ggplot Sort 百分比堆积条形图

R在堆叠条形图中仅在堆叠百分比值大于5的情况下仅显示标签

如何在保持条形高度的堆叠条形图中添加百分比标签(R plotly)

从以百分比为标签的计数列创建饼图

堆叠条形图将变量转换为ggplot2 R中不相关变量的基于不存在的百分比