ggplot绘制分类变量线性回归时回归线不显示如何解决
问题原因
你当前代码无法显示回归线的核心原因是x轴映射的season为分类变量(字符/因子类型),线性回归函数lm()对分类自变量默认返回组间均值差异结果,无法直接在分类x轴上生成连续的回归线。
调整方案
单张季节变量图修复
仅需要给geom_smooth单独指定x为分类变量对应的整数编码即可正常绘制回归线,修改后代码如下:
ggplot(data, aes(x = season, y = dep_delay)) + geom_boxplot() + labs(x="season") + geom_smooth(aes(x = as.numeric(season)), method = "lm",se=FALSE, col = "blue")
三个线性模型对应批量绘图
如果需要同时绘制你提到的3个线性模型对应的可视化,可以参考如下代码:
# 加载拼图包,不需要多图拼接可忽略 library(patchwork) # 季节模型对应图 p_season <- ggplot(data, aes(x = season, y = dep_delay)) + geom_boxplot() + labs(x="季节") + geom_smooth(aes(x = as.numeric(season)), method = "lm", se=FALSE, col = "blue") # 航司模型对应图 p_carrier <- ggplot(data, aes(x = carrier, y = dep_delay)) + geom_boxplot() + labs(x="航司") + geom_smooth(aes(x = as.numeric(carrier)), method = "lm", se=FALSE, col = "red") # 出发机场模型对应图 p_origin <- ggplot(data, aes(x = origin, y = dep_delay)) + geom_boxplot() + labs(x="出发机场") + geom_smooth(aes(x = as.numeric(origin)), method = "lm", se=FALSE, col = "green") # 三图拼接输出,不需要可单独打印单个p对象 p_season + p_carrier + p_origin
注意事项
分类自变量对应的线性回归本质是方差分析,此处绘制的回归线斜率代表因变量随分类变量排序递增的单位变化量,解读时需注意和连续自变量回归的差异。
内容的提问来源于stack exchange,提问作者Michael Visconti
相关产品推荐
相关产品推荐

