Search code examples
rggplot2plotfrequencylattice

Relative frequency histogram in R, ggplot


I can draw relative frequency histogram in R, using lattice package:

a <- runif(100)
library(lattice)
histogram(a)

I want to get the same graph in ggplot. I tried

dt <- data.frame(a)
ggplot(dt, aes(x = a)) + 
geom_bar(aes(y = ..prop..))+
 scale_y_continuous(labels=percent)

but it doesn't work like that. What I should change in the code? Calculating relative frequency before graph is not an option for me.


Solution

  • You want a histogram, not a barplot, so:

    ggplot(dt, aes(x = a)) + 
      geom_histogram(aes(y = after_stat(count / sum(count))), bins = 8) +
      scale_y_continuous(labels = scales::percent)
    

    lattice:

    enter image description here

    ggplot2:

    enter image description here

    You can see that the binning algorithm works slightly different for the two packages.