r - 如何计算和绘制堆叠条的百分比标签与条的总数?

标签 r ggplot2 geom-text

我试图在 R 中绘制堆叠条中每个条的百分比标签,如果您看到第一个条,百分比总和为 28%,而不是我正在寻找的 100%。第一个柱形图应该是 72%、14%、14%,第二个柱形柱应该是 11%、67%、22%,第三个柱形柱应该是 56%、11%、33%。

堆叠条形结果图像:

img

这是我正在使用的代码,带有虚拟数据

df1 <- data.frame(ID = c(1, 2, 3, 4, 5),var1 = c('a', 'b', 'c', 'b', 'a','a', 'b', 'c', 'a', 'b','a', 'c', 'a', 'a', 'c','a', 'b', 'c', 'a', 'b','a', 'a', 'c', 'b', 'b'),var2 = c('l', 'm', 's', 'm', 's','l', 'm', 's', 's', 's','l', 'm', 's', 's', 'l','l', 'm', 's', 's', 'm','l', 'm', 'm', 'm', 'l'))

rs <- factor(df1$var1,levels = c("a","b","c"))

cs <- factor(df1$var2, levels = c("l","m","s"))

ggplot(df1, aes(cs, fill = rs)) + geom_bar() + 
    labs( x="", y="", title="", fill ="x") + ####LABELS
    theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(), axis.line = element_line(colour = "black")) + ####BACKGROUND
    geom_text(aes(label=..count.., group = cs),stat = "count", position = position_stack(1.05))+
    geom_text(aes(label=scales::percent(..count../sum(..count..))), stat='count',position=position_stack(0.5)) 

我尝试添加以下行,因为 ..count.. 给了我堆栈的值,例如 var1:a、var2:l = 5 和 ..count..,group=cs,给了我总数堆叠条,在这种情况下为条 l = 7,但它不起作用。
+geom_text(aes(label=scales::percent(..count../..count..,group = cs)), stat='count',position=position_stack(0.5))

我很感激你的帮助。

最佳答案

如果您可以预先计算要显示的内容,也许会更简单一些。一种方法可能是

library(dplyr)
library(ggplot2)

df1 %>%
  count(var2, var1) %>%
  group_by(var2) %>%
  mutate(n1 = paste0(round(n/sum(n) * 100), "%")) %>%
  ggplot() + aes(var2, n, fill = var1) + 
  geom_col(width = .7) + 
  geom_text(aes(label = n1), position = position_stack(vjust = 0.5), size = 5) 

enter image description here

关于r - 如何计算和绘制堆叠条的百分比标签与条的总数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57470218/

相关文章:

r - 基于成功率填充的 stat_bin2d

r - 如何在R中可视化覆盖圆形图的集群?

r - ggplot2:从图中删除未使用的因子水平组合的方面 (facet_grid)

r - 将不同数据集中的 geom_text 添加到 geom_bar

r - 如何删除 ggplot geom_bar 图中的选择标签并将这些标签居中?

c++ - 负斐波那契项 F(50) 与 R 包 "Rcpp"

r - 如何增加ggplot2中图例的大小

r - 更改由 ggfortify::autoplot 创建的 ggplot 的分面标签

r - 带有替换的geom_text位置

r - fdcu ylim 在绘图包 : hydroTSM - logaritmic y-axis 中不起作用