Reputation: 2088
I'm trying to create a bar plot with ggplot2, showing counts on the y axis, but also the percents of total on top of each bar. I've calculated the counts and percents of total, but can't figure out how to add the percents total on top of the bars. I'm trying to use geom_text, but not able to get it work.
A minimal example:
iris %>%
group_by(Species) %>%
summarize(count = n()) %>%
mutate(percent = count/sum(count)) %>%
ggplot(aes(x=Species, y=count)) +
geom_bar(stat="identity") +
geom_text(aes(label = scales::percent(..prop..), y=..count..), stat= "count", vjust = -.5)
I have looked at other answers like How to add percentage or count labels above percentage bar plot?, but in those examples, both the y axis and labels show percents. I am trying to show counts on the y axis and percents in the labels.
Upvotes: 2
Views: 2127
Reputation: 3619
Just use percent
as label.
iris %>%
group_by(Species) %>%
summarize(count = n()) %>%
mutate(percent = count/sum(count)) %>%
ggplot(aes(x=Species, y=count)) +
geom_col() +
geom_text(aes(label = paste0(round(100 * percent, 1), "%")), vjust = -0.25)
Upvotes: 4
Reputation: 32538
library(dplyr)
library(ggplot2)
df1 = iris %>%
group_by(Species) %>%
summarize(count = n()) %>%
mutate(percent = count/sum(count))
ggplot(data = df1, aes(x = Species, y = count, label = paste0(round(percent,2),"%"))) +
geom_bar(stat="identity") +
geom_text(aes(y = count*1.1))
Upvotes: 1