首页 > 解决方案 > 如何向 ggplot2 中的各种散点图添加指数趋势线?

问题描述

第一次在这里发布问题。

我似乎找不到一种简单的方法来将指数趋势线添加到我的各种散点图中。我有 8 种树种,它们的高度(以米为单位)和胸高的直径(简称 DBH,以厘米为单位)的关系不同。现在我已经设法为每种树种绘制了不同的散点图,但我似乎找不到添加指数趋势线的方法。DBH 散点图 - 每种树型的高度关系

我使用的代码如下:

ggplot(data, aes(Height__m_,DBH__cm_)) +
  geom_point(aes(color = Species)) +
  facet_wrap(~Species, ncol = 4, nrow = 2) +
  labs(title = "DBH - Height Relationship", y = "Height (m)", x = "DBH (cm)")

当我添加geom_smooth函数时,我似乎无法添加指数趋势线,因为我知道这些类型的关系最适合。我尝试使用的代码是:

 geom_smooth(method = "nls", formula =  y ~ a * exp(b * x), aes(color = "Exponential"),
          se = FALSE, start = c(a = 1, b= 1))`

如果还有可能增加 R2 值,那也将受到欢迎。我将不胜感激!

标签: rggplot2exponential

解决方案


我们没有您的数据,但这里有一个使用内置Orange数据集的示例。在这种情况下,将较低的起始值设置b为 0.001 会删除一条警告消息(1:计算失败stat_smooth():奇异梯度,无法找到任何可行的拟合。

ggplot(Orange, aes(age,circumference)) +
  geom_point() +
  facet_wrap(~Tree, nrow = 2) +
  stat_smooth(method = 'nls', 
            method.args = list(start = c(a=1, b=0.001)), 
            formula = y~a*exp(b*x), colour = 'black', se = FALSE)

在此处输入图像描述


推荐阅读