geom_density to match geom_histogram binwitdh

2020-02-04 20:58发布

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.

标签: r ggplot2
1条回答
不美不萌又怎样
2楼-- · 2020-02-04 21:53

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

查看更多
登录 后发表回答