I want to use ggplot to make a histogram using percentages. I found this answer that gets me part of the way there.
However, I also want to place a
You'll want to just set the y
values for your labels as well (and also make sure you're using the same bins are you are for the bars)
library(scales)
p <- ggplot(mtcars, aes(x = hp)) +
geom_bar(aes(y = (..count..)/sum(..count..)), binwidth = 25) +
scale_y_continuous(labels = percent_format()) #version 3.0.9
##scale_y_continuous(labels = percent) #version 3.1.0
p <- p + stat_bin(aes(y=(..count..)/sum(..count..),
label=round((..count..)/sum(..count..),2)),
geom="text", size=4, binwidth = 25, vjust=-1.5)
plot(p)
When using geom_bar()
with binwidth
you will currently get following error:
geom_bar()
no longer has abinwidth
parameter. Please usegeom_histogram()
instead.
I modified MrFlick's code by including geom_histogram()
and by displaying the values to be shown as percentage (instead of fractions) using paste0
function.
library(scales)
p <- ggplot(mtcars, aes(x = hp)) +
geom_histogram(aes(y = (..count..)/sum(..count..)), binwidth = 25) +
stat_bin(aes(y=(..count..)/sum(..count..),
label=paste0(round((..count..)/sum(..count..)*100,1),"%")),
geom="text", size=4, binwidth = 25, vjust=-1.5)
plot(p)
Output: