I have a stacked percentage barplot in ggplot, I'd like to put the total observation number on top of the stacked bars (while keeping the stacked bars in percentages). Yet I keep running into problems.
Below is my code to produce the percentage barplot:
# 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
so I have 2 questions:
- how do I put the total observation number for each of cat1 "N=" label on top of each stacked bar)?
- What exactly is the y for the barplot in my code(aes(x=...))? I have x, but no y, but the plot seems to work..
thanks!
geom_text(aes(label =value,ymax=0))
– debbybeginner