核密度图和直方图叠加
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"))
你得到:
它是否回答了您的问题?
所以我找到了一种使用 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"))
你得到:
它是否回答了您的问题?