-1

我创建了一个带有变量计数的堆积条形图。我想将这些保留为计数,以便不同的条形大小代表不同的组大小。但是,在条形图中,我想添加显示每个堆栈比例的标签 - 以百分比表示。

我设法为每个组创建了计数堆积图。我也创建了标签,它们被正确放置。我挣扎的是如何计算那里的百分比?

我试过这个,但我得到一个错误:

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()

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

期望的结果:

在此处输入图像描述

4

1 回答 1

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()

在此处输入图像描述

于 2020-03-31T14:49:20.363 回答