ggplot2 barplot-在堆叠的条形图中添加百分比标签,但在y轴上保留计数

时间:2020-03-31 14:40:17

标签: r ggplot2 direct-labels

我已经创建了一个带有变量计数的堆积条形图。我想保留这些作为计数,以便不同的条形尺寸代表不同的组尺寸。但是,我希望在条形图内添加标签,以百分比形式显示每个堆栈的比例。

我设法为每个组创建了堆叠的计数图。我还创建了标签,并正确放置了它们。我所苦恼的是如何计算那里的百分比?

我已经尝试过,但是出现错误:

dataex <- iris %>%
  dplyr::group_by(group, Species) %>%
  dplyr::summarise(N = n())
names(dataex)

dataex <- as.data.frame(dataex)
str(dataex)

ggplot(dataex, aes(x = group, y = N, fill = factor(Species))) +
  geom_bar(position="stack", stat="identity") +
  geom_text(aes(label = ifelse((..count..)==0,"",scales::percent((..count..)/sum(..count..)))), position = position_stack(vjust = 0.5), size = 3) +
  theme_pubclean()

(计数)中的错误== 0:比较(1)仅适用于原子 和列表类型

所需结果:

enter image description here

1 个答案:

答案 0 :(得分:1)

好吧,刚刚找到答案...或解决方法。也许这将对将来的人有所帮助:计算ggplot之前的百分比,然后仅使用该向量作为标签即可。

dataex <- iris %>%
  dplyr::group_by(group, Species) %>%
  dplyr::summarise(N = n()) %>%
  dplyr::mutate(pct = paste0((round(N/sum(N)*100, 2))," %")) 
names(dataex)

dataex <- as.data.frame(dataex)
str(dataex)

ggplot(dataex, aes(x = group, y = N, fill = factor(Species))) +
  geom_bar(position="stack", stat="identity") +
  geom_text(aes(label = dataex$pct), position = position_stack(vjust = 0.5), size = 3) +
  theme_pubclean()

enter image description here