首页 > 解决方案 > ggplot2:带有geom_bar(位置='填充')的堆叠条形图中的值标签

问题描述

有人可以帮我如何将值标签添加到ggplot中的堆叠条形图吗?有没有一种方法可以计算百分比,geom_bar()或者我必须手动计算百分比然后使用geom_col()

library(tidyverse)

df <- data.frame(var1 = sample(c("A","B"), size = 100, replace=TRUE),
                 var2 = sample(c("x", "y"), size=100, replace=TRUE))

df %>% 
  ggplot(aes(x = var1, fill = var2)) + 
    geom_bar(position = 'fill') +
    geom_text(aes(x = var1, fill = var2, label = "x")) <= ???

感谢帮助!

标签: rggplot2geom-bargeom-col

解决方案


虽然stat_count计算引擎盖下的一些百分比(可以通过..prop..after_stat(prop)大部分时间您必须手动计算百分比来访问。因此,更简单的方法可能是在将数据传递给 ggplot2 之前对其进行汇总。但是,我在下面的回答向您展示一种使用after_statand即时计算百分比的方法tapply

library(tidyverse)

df <- data.frame(var1 = sample(c("A","B"), size = 100, replace=TRUE),
                 var2 = sample(c("x", "y"), size=100, replace=TRUE))

df %>% 
  ggplot(aes(x = var1, fill = var2)) + 
  geom_bar(position = 'fill') +
  geom_text(aes(x = var1, 
                label = scales::percent(after_stat(count / tapply(count, x, sum)[x])), 
                group = var2), position = "fill", stat = "count")


推荐阅读