R语言ggplot2调用geom_smooth(method='lm')不显示回归线问题排查
回归线不显示的原因及修正方案
首要原因
你在ggplot()的全局美学映射中把color绑定到了分类变量tumor,这会让ggplot自动按每个tumor取值拆分独立分组,而你的数据集里每个tumor仅对应1条观测记录,线性回归(lm)拟合至少需要2条观测数据,因此无法生成回归线。
其他可能原因
- 运行代码前未加载ggplot2包:缺少
library(ggplot2)语句时,部分图层功能可能运行异常,也会导致回归线不显示 - 存在其他隐式分组设置:如果代码中还有未显式声明的分组逻辑,也会干扰回归拟合的分组规则
修正代码
将color = tumor的映射从全局移动到仅需要按肿瘤着色的geom_point、geom_text图层,全局不设置分组,geom_smooth就会基于全部样本拟合回归线:
library(ggplot2) df <- read.table(text = "tumor density fraction A 2.31 0.224 B 2.76 0.042 C 1.51 0.039 D 1.48 0.429 E 1.97 0.081 F 1.82 0.026 G 1.5 0.083 H 2.38 0.043 I 2.52 0.105 J 1.47 0.200 K 2.17 0.049 L 1.5 0.022 M 2.03 0.100 N 2.2 0.021 O 1.8 0.000 P 1.62 0.055", header = T, sep = "\t") ggplot(df,aes(x = density, y = fraction))+ geom_point(aes(color = tumor))+ geom_text(aes(color = tumor, label = tumor), hjust = 1.2)+ geom_smooth(method = "lm")
如果需要按分组拟合回归线,你需要先将数据合并为更少的分组,保证每个分组至少有2条及以上观测记录即可。
内容的提问来源于stack exchange,提问作者user3138373
相关产品推荐
相关产品推荐

