ggplot:在条形图上显示每个类别的计数数据百分比

时间:2021-03-08 07:18:36

标签: r ggplot2 bar-chart

假设我有一个包含两个分类变量的数据集:df <- data.frame(fac1 = as.factor(c(rep(c(1,2),4)),fac2 = rep(c('a','b'),6))

我想创建一个类别由另一个类别填充的堆积条形图,并显示同一类别的每个条形上的百分比。如果我执行以下操作:

ggplot(df, aes(fac2,fill=fac1)) + geom_bar(position='stack') + 
geom_text(aes(label=..count../sum(..count..)),position='stack',stat='count',vjust=1.5)

我会得到:enter image description here

但我想获得每个类别的百分比,这意味着我想查看每个 1,2 或 3 的百分比在因子 'a' 中的百分比,而不是总数的百分比(因此在这种情况下,它将是1,2 和 3) 各占 33.2%,因子“b”也是如此。

提前致谢。

1 个答案:

答案 0 :(得分:1)

这是一种方法:

library(dplyr)
library(ggplot2)

df %>%
  count(fac2, fac1) %>%
  group_by(fac2) %>%
  mutate(lab = paste0(round(prop.table(n) * 100, 2), '%')) %>%
  ggplot(aes(fac2,n, fill=fac1)) + 
  geom_col() + 
  geom_text(aes(label=lab),position='stack',vjust=1.5)

enter image description here