我在ggplot中有一个堆积百分比条形图,我想将总观察数放在堆叠条形图的顶部(同时保持堆叠条形图的百分比) . 然而,我一直遇到问题 .
下面是我生成百分比条形图的代码:
# sample dataset
set.seed(123)
cat1<-sample(letters[1:3], 500, replace=T, prob=c(0.1, 0.2, 0.65))
cat2<-sample(letters[4:8], 500, replace=T, prob=c(0.3, 0.4, 0.75, 0.5, 0.1))
df <- data.frame(cat1, cat2)
# the barplot
ggplot(df, aes(x=cat1))+
geom_bar(aes(fill = cat2),
position = 'fill',color = "black")+
scale_y_continuous(labels = scales::percent)+
labs ( y = "Percentage")+
# this final line is me trying to add the label
geom_text(aes(label=cat1))
# this is the observation number I want display
table(df$cat1)
# but I get this error:
Error: geom_text requires the following missing aesthetics: y
所以我有两个问题:
-
如何将每个cat1 "N="标签的总观察数放在每个堆叠条的顶部)?
-
我的代码中的条形图的y究竟是什么(aes(x = ...))?我有x,但没有y,但情节似乎有效..
谢谢!
2 回答
如果您使用
dplyr
来计算百分比并格式化标签,那么您采用的方法略有不同(但仍然有点不同) .我也改变了你的传奇以匹配图表上的顺序:)
你可以试试