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

ggplot2中添加lm()结果的回归线失败求助

问题解决方法

你的代码里有两个核心问题导致回归线无法显示:

  • 散点图的x/y轴变量搞反了:你拟合的模型是mpg ~ disp(mpg是因变量,disp是自变量),但ggplot里设成了x=mpg,y=disp,导致回归线的斜率和截距与当前坐标轴不匹配,自然无法显示。
  • geom_abline的参数使用冗余且错误:你已经把截距和斜率存入abline_data,没必要再调用coef(model),而且这两个参数可以直接作为全局参数传入,不需要放在aes()里。

修正后的代码(方法一:手动用geom_abline)

library(tidyverse)
model <- lm(mpg ~ disp, data = mtcars)

mtcars %>%  
  ggplot(aes(x = disp, y = mpg)) +  # 修正x/y轴变量对应关系
  geom_point() +
  geom_abline(intercept = coef(model)[1], slope = coef(model)[2],  # 直接传入参数
              color = "red", size = 1)  # size设为1更合理,原6过于粗厚

更简便的方法(方法二:用geom_smooth自动拟合)

不需要手动拟合lm模型,直接用geom_smooth(method = "lm")就能自动添加回归线,还可选择是否显示置信区间(加se = FALSE即可关闭):

library(tidyverse)

mtcars %>%  
  ggplot(aes(x = disp, y = mpg)) +
  geom_point() +
  geom_smooth(method = "lm", color = "red", size = 1, se = FALSE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:55:57