R语言如何在散点图中根据已知回归方程绘制回归直线
R绘图添加已知截距斜率回归直线实现方法
你不需要手动生成直线上的点坐标,R的绘图系统内置了直接按截距、斜率参数绘制直线的函数,直接调用即可完成需求。
基础R绘图实现代码
保留你之前计算非参数回归参数mdns(斜率)、mdni(截距)的代码,后续直接追加以下绘图代码即可:
# 拟合普通lm线性回归 lm_model <- lm(y_book ~ x_book, data = data1) # 绘制原始数据散点图 plot( x = data1$x_book, y = data1$y_book, xlab = "X取值", ylab = "Y取值", main = "两种回归方法拟合效果对比", pch = 16, col = "#666666" ) # 添加lm拟合的回归直线 abline(lm_model, col = "#2c7fb8", lwd = 2, lty = 1) # 添加非参数回归直线,直接传入已算出的截距、斜率 abline(a = mdni, b = mdns, col = "#d95f02", lwd = 2, lty = 2) # 添加图例区分两条直线 legend( "topright", legend = c("lm普通线性回归", "非参数中位数斜率回归"), col = c("#2c7fb8", "#d95f02"), lwd = 2, lty = c(1, 2) )
核心函数说明
abline()是基础绘图系统专门用于添加直线的函数,支持两种常用传参方式:
- 直接传入
lm拟合的模型对象,函数会自动提取模型的截距、斜率绘制对应直线 - 手动传参:
a参数对应直线截距,b参数对应直线斜率,函数会自动在当前绘图的X轴取值范围内,按照y = a + b*x的方程绘制完整直线,无需手动构造坐标点。
ggplot2绘图实现代码
如果你用ggplot2绘图,逻辑完全一致,对应代码如下:
library(ggplot2) ggplot(data1, aes(x = x_book, y = y_book)) + geom_point(color = "#666666", size = 2) + # 添加lm回归直线 geom_smooth(method = "lm", se = FALSE, color = "#2c7fb8", linewidth = 1, linetype = 1) + # 添加非参数回归直线 geom_abline(intercept = mdni, slope = mdns, color = "#d95f02", linewidth = 1, linetype = 2) + labs( x = "X取值", y = "Y取值", title = "两种回归方法拟合效果对比" ) + theme_bw()
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

