【发布时间】:2021-03-14 06:57:34
【问题描述】:
我正在尝试制作密度值的直方图,并将其与密度函数曲线(不是密度估计值)叠加。
使用一个简单的标准正常示例,这里是一些数据:
x <- rnorm(1000)
我能做到:
q <- qplot( x, geom="histogram")
q + stat_function( fun = dnorm )
但这给出了直方图的频率而不是密度的比例。使用..density..,我可以在直方图上得到正确的比例:
q <- qplot( x,..density.., geom="histogram")
q
但是现在这给出了一个错误:
q + stat_function( fun = dnorm )
有什么我没看到的吗?
另一个问题,有没有办法绘制函数的曲线,比如curve(),但不是作为层?
【问题讨论】:
-
问题是你已经在
qplot中使用..density.. 为你的绘图定义了一个全局y。这让stat_function感到困惑。最简单的解决方法是写qplot(x, geom = 'blank') + geom_histogram(aes(y = ..density..)) + stat_function(fun = dnorm)。下面看我的详细回答 -
相当于
curve(dnorm, -4, 4)将是qplot(x = -4:4, stat = 'function', fun = dnorm, geom = 'line') -
啊,对了,我尝试将函数作为第一个参数,但现在看看出了什么问题。谢谢!