与密度曲线叠加直方图
我正在尝试制作密度值的直方图,并将其与密度函数的曲线(而不是密度估计)叠加。
使用一个简单的标准正态示例,这里有一些数据:
x <- rnorm(1000)
我可以这样做:
q <- qplot( x, geom="histogram")
q + stat_function( fun = dnorm )
但这给出了频率而不是密度的直方图的比例。使用 ..密度..
我可以在直方图上获得正确的比例:
q <- qplot( x,..density.., geom="histogram")
q
但是现在这给出了一个错误:
q + stat_function( fun = dnorm )
有什么我没有看到的吗?
另一个问题,有没有办法绘制函数的曲线,例如curve(),但不是作为图层?
I am trying to make a histogram of density values and overlay that with the curve of a density function (not the density estimate).
Using a simple standard normal example, here is some data:
x <- rnorm(1000)
I can do:
q <- qplot( x, geom="histogram")
q + stat_function( fun = dnorm )
but this gives the scale of the histogram in frequencies and not densities. with ..density..
I can get the proper scale on the histogram:
q <- qplot( x,..density.., geom="histogram")
q
But now this gives an error:
q + stat_function( fun = dnorm )
Is there something I am not seeing?
Another question, is there a way to plot the curve of a function, like curve()
, but then not as layer?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
干得好!
Here you go!
,传递观察到的平均值和标准差,并使用 ggplot 代替 qplot:
Ramnath 答案的一个更简单的替代方案 sstatic.net/uIE0B.png" rel="noreferrer">
A more bare-bones alternative to Ramnath's answer, passing the observed mean and standard deviation, and using
ggplot
instead ofqplot
:使用
ggplot2
中的geom_密度()
怎么样?像这样:这也适用于多模式分发,例如:
What about using
geom_density()
fromggplot2
? Like so:This also works for multimodal distributions, for example:
我正在尝试获取虹膜数据集。您应该能够在这些简单的代码中看到您需要的图表:
I'm trying for iris data set. You should be able to see graph you need in these simple code: