我想将一个ggplot直方图(y轴=计数)与经验密度曲线和正态密度曲线叠加。我尝试了:
library(ggplot2)
set.seed(1234)
v <- as_tibble(rnorm(1000, 10, 2.5))
ggplot(v, aes(x = value)) +
geom_histogram(aes(y = ..density..),
bins = 40, colour = "black", fill = "white") +
geom_line(aes(y = ..density.., color = 'Empirical'), stat = 'density') +
stat_function(fun = dnorm, aes(color = 'Normal'),
args = list(mean = 10, sd = 2.5)) +
scale_colour_manual(name = "Colors", values = c("red", "blue"))
但是这张图的y轴是密度,我希望将频率作为y轴。
我的第二次尝试得到了一个y轴以频率(计数)为单位的图像,但只有经验密度。
library(ggplot2)
set.seed(1234)
v <- as_tibble(rnorm(1000, 10, 2.5))
b <- seq(0, 20, by = 0.5)
p1 <- ggplot(v, aes(x = value)) +
geom_histogram(aes(y = ..count..),
breaks = b,
binwidth = 0.5,
colour = "black",
fill = "white") +
geom_line(aes(y = ..density.. * (1000 * 0.5),
color = 'Empirical'),
stat = 'density') +
scale_colour_manual(name = "Colors", values = c("red", "blue"))
我无法将 dnorm 曲线显示在同一图中,例如,当我尝试下面的代码时,只有密度曲线(蓝色线)显示在 x 轴上。
p2 <- p1 + stat_function(fun = dnorm, aes(color = 'Normal'),
args = list(mean = 10, sd = 2.5))
p2
我想我需要根据binwidth(如经验线)调整曲线,但我不知道该如何做。
我在SO上搜索了这个问题,并找到了很多类似的问题。 但是它们都解决了我的第一次尝试(使用密度作为y轴),一个具有计数轴的经验叠加(我的第二次尝试)或使用其他(基础)绘图命令,我不熟悉。