r - 如何向 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 值,那也将受到欢迎。我将不胜感激!
解决方案
我们没有您的数据,但这里有一个使用内置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)
推荐阅读
- ios - Alamofire POST 请求,正文中有一个简单的字符串作为参数,标头仍然显示缺少参数值
- cesium - Cesium:我可以用图像覆盖地形,然后在其上添加slopeRamp 材质吗?
- angular - 材料表格的材料表(使用材料滑块)不起作用
- angular - 角度材料步进器在每次点击时动态添加新的步进项目
- react-native - 尝试安装 react-native-google-place-picker
- android - 融合位置提供程序 setSmallestDisplacement 在特定运动中不起作用
- python - 在保持原始形状的同时将图像向左移动 x 个像素
- java - Hibernate Restriction Conjunction 不适用于系统 tomcat
- c# - 我如何使用鼠标或触摸窗口窗体在所有控件中滚动面板
- java - 什么是用户名的正则表达式,第一个字符为字母并且在 Java 中有特定的范围?