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
相关产品推荐
相关产品推荐

