小编Caj*_*ira的帖子

使用 ggplot 在直方图上绘制不同的分布

我试图在 R 中绘制一个直方图并用来自不同分布的密度覆盖它。它适用于常规直方图,但我无法让它与 ggplot2 包一起使用。

a <- dataset$age
Run Code Online (Sandbox Code Playgroud)

现在遵循我的常规直方图的代码:

Histogram_for_age <- hist(a, prob=T, xlim=c(0,80), ylim=c(0,0.055), main="Histogram for age with density lines", xlab="age") 

mean <- mean(a)
sd <- sd(a)
Run Code Online (Sandbox Code Playgroud)

现在是密度的线/曲线:

lines(density(dataset$age), col="blue", lwd=2, lty=1)
curve(dnorm(x, mean = mean, sd = sd), add = T, col="red", lwd=2, lty=2)
curve(dgamma(x, shape =mean^2/sd^2, scale = sd^2/mean), add = T, col="goldenrod", lwd=2, lty=3) 
Run Code Online (Sandbox Code Playgroud)

和一个传说:

legend("topright", 
    c("actual distribution of age","gaussian distribution", "gamma distribution"),  
   lty=c(1,2,3),  
   lwd=c(2,2,2),col=c("blue","red","goldenrod"), cex=0.65) 
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我在 ggplot2 上尝试过的:

ggplot(dataset, aes(x=age)) + 
geom_histogram(aes(y=..density..),
             colour="black", fill="white") + …
Run Code Online (Sandbox Code Playgroud)

curve r histogram ggplot2 density-plot

3
推荐指数
1
解决办法
4887
查看次数

标签 统计

curve ×1

density-plot ×1

ggplot2 ×1

histogram ×1

r ×1