当垂直轴是频率或相对频率时,是否有一种方法可以叠加类似于密度曲线的东西?(不是实际的密度函数,因为该区域不需要整合到1).以下问题类似:
ggplot2:具有正常曲线的直方图,以及用户自我回答..count..的内容geom_density().然而这似乎不寻常.
以下代码产生过度膨胀的"密度"线.
df1 <- data.frame(v = rnorm(164, mean = 9, sd = 1.5))
b1 <- seq(4.5, 12, by = 0.1)
hist.1a <- ggplot(df1, aes(v)) +
stat_bin(aes(y = ..count..), color = "black", fill = "blue",
breaks = b1) +
geom_density(aes(y = ..count..))
hist.1a
Run Code Online (Sandbox Code Playgroud)

Pat*_* W. 19
@joran的回复/评论让我想到了适当的缩放因子是什么.为了后人的缘故,这是结果.
垂直轴是频率(也称为计数)

因此,以箱计数测量的垂直轴的缩放因子是

在这种情况下,使用N = 164和宽度为0.1,平滑线中y的美学应为:
y = ..density..*(164 * 0.1)
Run Code Online (Sandbox Code Playgroud)
因此,下面的代码产生一个"密度"线,用于按频率(也称为计数)测量的直方图进行缩放.
df1 <- data.frame(v = rnorm(164, mean = 9, sd = 1.5))
b1 <- seq(4.5, 12, by = 0.1)
hist.1a <- ggplot(df1, aes(x = v)) +
geom_histogram(aes(y = ..count..), breaks = b1,
fill = "blue", color = "black") +
geom_density(aes(y = ..density..*(164*0.1)))
hist.1a
Run Code Online (Sandbox Code Playgroud)

垂直轴是相对频率时

使用上面的内容,我们可以写
hist.1b <- ggplot(df1, aes(x = v)) +
geom_histogram(aes(y = ..count../164), breaks = b1,
fill = "blue", color = "black") +
geom_density(aes(y = ..density..*(0.1)))
hist.1b
Run Code Online (Sandbox Code Playgroud)

当垂直轴是密度时
hist.1c <- ggplot(df1, aes(x = v)) +
geom_histogram(aes(y = ..density..), breaks = b1,
fill = "blue", color = "black") +
geom_density(aes(y = ..density..))
hist.1c
Run Code Online (Sandbox Code Playgroud)

试试这个:
ggplot(df1,aes(x = v)) +
geom_histogram(aes(y = ..ncount..)) +
geom_density(aes(y = ..scaled..))
Run Code Online (Sandbox Code Playgroud)