如何将高斯曲线添加到使用 qplot 创建的直方图?
我的问题可能类似于 将密度曲线拟合到直方图R。使用 qplot,我使用此命令创建了 7 个直方图:
(qplot(V1, data=data, binwidth=10, facets=V2~.)
对于每个切片,我想添加一条拟合高斯曲线。当我尝试使用 lines()
方法时,出现错误:
Error in plot.xy(xy.coords(x, y), type = type, ...) :
plot.new has not been called yet
正确执行此操作的命令是什么?
I have question probably similar to Fitting a density curve to a histogram in R. Using qplot I have created 7 histograms with this command:
(qplot(V1, data=data, binwidth=10, facets=V2~.)
For each slice, I would like to add a fitting gaussian curve. When I try to use lines()
method, I get error:
Error in plot.xy(xy.coords(x, y), type = type, ...) :
plot.new has not been called yet
What is the command to do it correctly?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您尝试过
stat_function
吗?您可能需要使用 aes(y = ..密度..) 绘制直方图,以便绘制密度值而不是计数。
许多有用的信息可以在这个中找到 问题,包括在不同方面绘制不同正态曲线的一些建议。
以下是一些示例:
在每个面上覆盖单个法线密度:
从我链接到的问题中,创建具有不同正态曲线的单独数据框:
并使用
geom_line
分别绘制它们:Have you tried
stat_function
?You'll probably want to plot the histograms using
aes(y = ..density..)
in order to plot the density values rather than the counts.A lot of useful information can be found in this question, including some advice on plotting different normal curves on different facets.
Here are some examples:
Overlay a single normal density on each facet:
From the question I linked to, create a separate data frame with the different normal curves:
And plot them separately using
geom_line
:ggplot2 使用与基础图形不同的图形范例。 (虽然您可以使用
grid
图形,但最好的方法是向绘图添加新的stat_function
图层。ggplot2
代码是 请注意,我无法使用 qplot 来实现此功能,但到 ggplot 的转换相当简单,最重要的区别是您的数据必须。 采用 data.frame 格式。
另请注意 y 美学
aes=aes(y=..密度..))
的显式映射 - 这有点不寻常,但会获取stat_function
结果并将其映射到数据:ggplot2
uses a different graphics paradigm than base graphics. (Although you can usegrid
graphics with it, the best way is to add a newstat_function
layer to the plot. Theggplot2
code is the following.Note that I couldn't get this to work using
qplot
, but the transition toggplot
is reasonably straighforward, the most important difference is that your data must be in data.frame format.Also note the explicit mapping of the y aesthetic
aes=aes(y=..density..))
- this is slighly unusual but takes thestat_function
results and maps it to the data: