You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R绘图中平滑曲线?已试lowess但不知如何集成代码

用lowess平滑累积曲线的R代码实现

从你的代码来看,你应该是在绘制vegan包的物种累积曲线(accumresult对象)。要添加lowess平滑线,需要先提取曲线的原始数据,拟合平滑模型后再叠加到图上,具体步骤如下:

步骤1:提取累积曲线的数值

先从你的累积结果对象中取出横轴(样本数量)和纵轴(物种数量)的数据:

# 提取第一条曲线的x、y值
x1 <- PA_Spe_accum$x
y1 <- PA_Spe_accum$y

# 提取第二条曲线的x、y值
x2 <- PA_Spe2_accum$x
y2 <- PA_Spe2_accum$y

步骤2:用lowess拟合平滑曲线

使用lowess()函数拟合,核心参数f控制平滑程度(取值0-1,值越大曲线越平滑),这里以f=0.3为例:

# 拟合第一条曲线的平滑模型
fit1 <- lowess(x1, y1, f = 0.3)
# 拟合第二条曲线的平滑模型
fit2 <- lowess(x2, y2, f = 0.3)

步骤3:叠加平滑线到原有绘图

先运行你原来的绘图代码,再用lines()把平滑线加上:

# 原有绘图代码(保留置信区间)
plot(PA_Spe_accum, ci = 1.96, ci.type = "bar", las=1, col = "green3", lty = 1, lwd=2, ci.col = "green3", ci.lty = 1, xlim=c(0,60), ylim=c(0,70))
plot(PA_Spe2_accum, add = TRUE, ci = 1.96, ci.type = 'bar', lwd=2, col = 'royalblue4', lty = 1, ci.col = 'royalblue4', ci.lty = 1)

# 添加lowess平滑线,用不同线型区分原始曲线和平滑线
lines(fit1, col = "darkgreen", lwd = 2, lty = 2)
lines(fit2, col = "darkblue", lwd = 2, lty = 2)

额外调整建议

  • 如果你觉得平滑效果不合适,可以修改lowess()中的f参数:比如f=0.5会更平滑,f=0.1会更贴近原始数据。
  • 若要显示原始数据点,可以在plot()命令中添加pch=16(实心点)或其他点样式参数。

内容的提问来源于stack exchange,提问作者Anna-Sofie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 21:10:08