将法线曲线叠加到R中的直方图 [英] Overlay normal curve to histogram in R
问题描述
我设法在线找到了如何在R中将正常曲线叠加到直方图上,但是我想保留直方图的正常频率" y轴.请参阅下面的两个代码段,并注意在第二个y轴中如何用密度"替换y轴.如何像第一个图中那样将y轴保持为频率".
I have managed to find online how to overlay a normal curve to a histogram in R, but I would like to retain the normal "frequency" y-axis of a histogram. See two code segments below, and notice how in the second, the y-axis is replaced with "density". How can I keep that y-axis as "frequency", as it is in the first plot.
作为奖励::我也想在密度曲线上标记SD区域(最多3个SD).我怎样才能做到这一点?我尝试了abline
,但是该行延伸到了图形的顶部并且看上去很丑.
AS A BONUS: I'd like to mark the SD regions (up to 3 SD) on the density curve as well. How can I do this? I tried abline
, but the line extends to the top of the graph and looks ugly.
g = d$mydata
hist(g)
g = d$mydata
m<-mean(g)
std<-sqrt(var(g))
hist(g, density=20, breaks=20, prob=TRUE,
xlab="x-variable", ylim=c(0, 2),
main="normal curve over histogram")
curve(dnorm(x, mean=m, sd=std),
col="darkblue", lwd=2, add=TRUE, yaxt="n")
请参见上图中的y轴如何显示密度".我想让它成为频率".
See how in the image above, the y-axis is "density". I'd like to get that to be "frequency".
推荐答案
这是我发现的一种好方法:
Here's a nice easy way I found:
h <- hist(g, breaks = 10, density = 10,
col = "lightgray", xlab = "Accuracy", main = "Overall")
xfit <- seq(min(g), max(g), length = 40)
yfit <- dnorm(xfit, mean = mean(g), sd = sd(g))
yfit <- yfit * diff(h$mids[1:2]) * length(g)
lines(xfit, yfit, col = "black", lwd = 2)
这篇关于将法线曲线叠加到R中的直方图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!