核密度图和直方图叠加

Kernel Density Plots and Histogram overlay

所以我找到了一种使用 ggplot2 将我的 KDE 密度函数与我的直方图重叠的方法,但是我注意到我的直方图 y 轴是正确的频率,但我想制作第二个 y 轴对于我的密度图,我也不知道如何放大我的密度图。

我使用的代码是:

data_set <- mammals

library(ggplot2)
ggplot(data=data_set, aes(data_set$`Total Averages`))+
  geom_histogram(col='black', fill = 'white', binwidth = 0.5)+
  labs(x = 'Log10 total body mass (kg)', y = 'Frequency', title = 'Average body mass (kg) of mammalian species (male and female)')+
  geom_density(col=2)

我已经将 link 发布到下面的图片中,我的情节看起来像

您的直方图是使用每个 bins 数据的 count 绘制的。例如,要获得 scaled 的密度,您可以通过传递 y = ..count.. 来更改密度的表示。

如果你想表示这个密度的比例(比如缩放到最大1),你可以在scale_y_continuous中传递sec.axis参数(SO上很多帖子都有开发了这个特定功能的使用)如下:

df <- data.frame(Total_average = rnorm(100,0,2)) # Dummy example

library(ggplot2)
ggplot(df, aes(Total_average))+
  geom_histogram(col='black', fill = 'white', binwidth = 0.5)+
  labs(x = 'Log10 total body mass (kg)', y = 'Frequency', title = 'Average body mass (kg) of mammalian species (male and female)')+
  geom_density(aes(y = ..count..), col=2)+
  scale_y_continuous(sec.axis = sec_axis(~./20, name = "Scaled Density"))

你得到:

它是否回答了您的问题?