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

R中线性回归模型绘图异常问题求助

问题排查与解决:双轴散点图添加回归线异常

异常原因分析

  • 线性模型构建错误
    你尝试的lm代码中,data=c(likes,vues)是错误用法:c()函数会将两个数据框拆解为向量拼接,而非合并成包含对应列的新数据框。即使移除data参数,直接用likes$X2022.12.30 ~ vues$X2022.12.30,若两个向量长度不匹配或对应关系错位,也会导致模型参数异常,画出错误回归线。

  • 双轴刻度不匹配
    图表左侧y轴对应点赞量(范围0-120000),右侧y轴对应评论量(范围0-1500)。直接用abline添加评论回归线时,R默认使用左侧y轴刻度,评论量数值远小于点赞量,导致回归线被压缩到贴近x轴的位置,视觉上异常。

  • 绘图上下文坐标混乱
    多次使用par(new=TRUE)叠加绘图时,后续plot会继承前一个绘图的坐标范围,但你手动指定了不同ylim,易引发坐标系统混乱,进一步干扰回归线位置。

解决方法

步骤1:合并数据确保对应关系

先将三个数据框的对应列合并为新数据框,保证每一行的浏览、点赞、评论数据严格对应:

# 合并数据(假设三个数据框行顺序完全匹配)
combined_data <- data.frame(
  views = vues$X2022.12.30,
  likes = likes$X2022.12.30,
  comments = commentaires$X2022.12.30
)

步骤2:重新绘制图表并添加适配双轴的回归线

修改绘图代码,先处理点赞的散点图与回归线,再适配右侧y轴绘制评论的回归线:

# 初始化绘图参数
par(mar=c(4,4,4,4), bg="#FFECDE")

# 绘制基础空图与背景矩形
plot(NA, xlim=c(0,1500000), ylim=c(0,120000), axes=FALSE, xlab="", ylab="",
     main="Nombre de j'aime et de commentaires en fonction du nombre de vues")
rect(par("usr")[1], par("usr")[3], par("usr")[2], par("usr")[4], col="#E1DEFF")

# 绘制点赞散点图+回归线
points(combined_data$views, combined_data$likes, col="red", pch=-0x2022, bg="red")
lm_likes <- lm(likes ~ views, data=combined_data)
abline(lm_likes, col="red", lwd=2)

# 添加左侧y轴与标签
axis(2, col="red", col.axis="red", at=seq(0, 120000, by=20000)) 
mtext("Nombre de j'aime", side=2, line=2.5, col="red")

# 绘制评论散点图+适配右侧轴的回归线
par(new=TRUE)
plot(NA, xlim=c(0,1500000), ylim=c(0,1500), axes=FALSE, xlab="", ylab="")
points(combined_data$views, combined_data$comments, col="blue", pch=-0x2022, bg="blue")
lm_comments <- lm(comments ~ views, data=combined_data)
# 将评论预测值按左右轴比例转换,适配左侧坐标系统
y_comments_pred <- predict(lm_comments)
y_converted <- y_comments_pred * (120000 / 1500)
lines(combined_data$views, y_converted, col="blue", lwd=2)

# 添加右侧y轴与底部x轴
axis(4, col="blue", col.axis="blue", at=seq(0, 1500, by=250)) 
mtext("Nombre de commentaires", side=4, line=2.5, col="blue")
axis(1, col="black", col.axis="black", at=seq(0, 1400000, by=100000)) 
mtext("Nombre de vues", side=1, line=2.5, col="black")

# 添加图例
legend(x="topleft", legend=c("J'aime","Commentaires"),
       text.col="black", pch=c(-0x2022,-0x2022), col=c("red","blue"),
       bg="#C9FFF1", inset=0.02)
box()

关键说明

  • 合并数据框能确保lm模型使用的x、y数据严格对应,避免因错位导致的模型异常。
  • 评论回归线通过比例转换,将预测值映射到左侧y轴范围,保证绘制的线匹配右侧y轴实际刻度。
  • 先绘制空基础图再叠加内容,比多次plot叠加更稳定,避免坐标范围混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:25:53