【发布时间】:2016-02-16 21:31:08
【问题描述】:
我有为 (ur_memr_t$up...) 制作直方图的数据。然后我使用 fitdistr 来拟合数据的指数分布。我捕获了拟合分布的参数并生成了一些随机变量。然后我为 exp 随机变量制作了密度曲线。我想将密度放在直方图上。以下代码抛出此错误
exp_data <- data.frame( x = rexp(3000, rate = 0.0144896182))
ggplot(data = ur_memr_t, aes(ur_memr_t$updated_days_to_next_ur)) +
geom_histogram() + ggplot(exp_data, aes(x)) + geom_density()
Error in p + o : non-numeric argument to binary operator
In addition: Warning message:
Incompatible methods ("+.gg", "Ops.data.frame") for "+"
如果我跑步
ggplot(data = ur_memr_t, aes(ur_memr_t$updated_days_to_next_ur)) +
geom_histogram()
和
ggplot(exp_data, aes(x)) + geom_density()
分别生成正确的图。为什么他们不合作并在另一个之上绘制一个?
【问题讨论】:
-
如果您创建了一个reproducible example 将会很有帮助。由于我们无权访问
um_memr_t,因此我们无法运行您的代码。您不能添加两个ggplot对象。通常,您只需添加具有不同数据源和映射的新层。ggplot() + geom_histogram(data=ur_memr_t, aes(updated_days_to_next_ur, ..density..)) + geom_density(data=exp_data, aes(x), color="red")之类的东西应该很接近。请注意,计数和密度在不同的尺度上 -
这个问题也经常被问到。我建议搜索类似的答案:stackoverflow.com/questions/5688082/…