我已经创建了一个带有变量计数的堆积条形图。我想保留这些作为计数,以便不同的条形尺寸代表不同的组尺寸。但是,我希望在条形图内添加标签,以百分比形式显示每个堆栈的比例。
我设法为每个组创建了堆叠的计数图。我还创建了标签,并正确放置了它们。我所苦恼的是如何计算那里的百分比?
我已经尝试过,但是出现错误:
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)仅适用于原子 和列表类型
所需结果:
答案 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()