Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

geom_density to match geom_histogram binwitdh

Tags:

r

ggplot2

I would like to add a line to a distribution bar plot in ggplot2 to show the average distribution but am having trouble.

A ggplot call like this:

ggplot(x, aes(date_received)) + 
    geom_histogram(aes(y = ..count..), binwidth=30) +
    geom_density()

gives me the histogram bars for every 30 days worth of observations, but the density line is tracking the count for every individual day, as seen below (the static at the bottom is from geom_density.

enter image description here

Is it possible to add a geom_density layer to overlay a line that will show the average for the count of 30 day groups of observations like the binwidth in geom_histogram.

Any help is appreciated.

like image 869
moman822 Avatar asked May 24 '16 03:05

moman822


1 Answers

According to answer of Brian S. Diggs given in this e-mail you should multiply value of ..count.. in geom_density() by the value of binwidth= in geom_histogram().

set.seed(123)
df<-data.frame(x=rnorm(1000,100,15))

ggplot(df,aes(x))+
      geom_histogram(binwidth = 2.5)+
      geom_density(aes(y=2.5 * ..count..))

enter image description here

like image 79
Didzis Elferts Avatar answered Oct 01 '22 11:10

Didzis Elferts