【问题标题】:Overlaying exponential density over histogram of data在数据直方图上叠加指数密度
【发布时间】: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/…

标签: r ggplot2


【解决方案1】:

我认为它应该可以工作,但你只能有一个 ggplot 语句。试试这样的:

g = ggplot(data = ur_memr_t, aes(updated_days_to_next_ur)) 
g = g + geom_histogram(aes(updated_days_to_next_ur))
g = g + geom_density(data = exp_data, aes(x)) 

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-01
    • 2020-08-08
    • 2021-03-14
    • 2015-07-29
    相关资源
    最近更新 更多