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

R语言绘图中abline函数趋势线的数据定义问题求助

R 散点图添加趋势线实现方案

你可以直接基于现有数据拟合线性模型后传入abline函数,以下是可直接运行的完整代码:

# 导入原始数据
ten <- c(0.2,0.16,0.17,0.188)
fifty <- c(0.1,0.24,0.17,0.166)
hundred <- c(0.3,0.16,0.16,0.14)
fiveh <- c(0,0.02,0.04,0.022)

# 统一定义x、y变量,避免重复计算
x <- c(rep(10,4), rep(50,4), rep(100,4), rep(500,4))
y <- c(ten, fifty, hundred, fiveh)

# 绘制原始散点图
plot(x, y, 
    ylab= "% of Impaired Rivers", 
    xlab= "Number of Observations", 
    main= "samples from all rivers")

# 拟合y对x的线性回归模型
lm_result <- lm(y ~ x)

# 调用abline添加趋势线,设置红色、线宽2方便区分
abline(lm_result, col = "red", lwd = 2)

补充优化选项

如果需要在图上展示回归参数,可在上述代码后追加以下内容:

# 提取回归参数与拟合优度
intercept <- round(coef(lm_result)[1], 4)
slope <- round(coef(lm_result)[2], 6)
r_square <- round(summary(lm_result)$r.squared, 4)

# 在图表空白区域添加标注
text(300, 0.25, paste0("趋势线公式:y = ", slope, "x + ", intercept, "\n拟合优度R² = ", r_square))

如果需要拟合分组均值的趋势线,可添加以下代码:

# 计算每个观测数分组的平均受损率
group_y <- tapply(y, x, mean)
group_x <- as.numeric(names(group_y))
lm_group <- lm(group_y ~ group_x)
# 添加蓝色虚线作为分组均值趋势线
abline(lm_group, col = "blue", lwd = 2, lty = 2)

核心逻辑说明

abline函数支持直接传入lm()返回的线性模型对象,会自动提取截距和斜率参数绘制直线,无需手动计算。你可以通过col调整颜色、lwd调整线宽、lty调整线型(1为实线,2为虚线)自定义趋势线样式。

内容的提问来源于stack exchange,提问作者rayner perdana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:48:03