r:在散点图上绘制多条线时的空白图

r: Blank graph when plotting multiple lines on scatterplot

我的目标是生成一个图表,显示使用连续变量与分类变量的回归线之间的差异。我使用的是来自 Lock5Data 的 "SleepStudy" 数据集,我想显示回归线预测 ClassYear 的 GPA 是连续的还是分类的。代码如下:

library(Lock5Data)
data("SleepStudy")
fit2 <- lm(GPA ~ factor(ClassYear), data = SleepStudy)
fit2_line <- aggregate(fit2$fitted.values ~ SleepStudy$ClassYear, FUN = mean)
colnames(fit2_line) <- c('ClassYear','GPA')

options(repr.plot.width=5, repr.plot.height=5)
library(ggplot2)
ggplot() +
    geom_line(data=fit2_line, aes(x=ClassYear, y=GPA)) + # Fit line, ClassYear factor
    geom_smooth(data=SleepStudy, method='lm', formula=GPA~ClassYear) + # Fit line, ClassYear continuous
    geom_point(data=SleepStudy, aes(x=ClassYear, y=GPA)) # Data points as dots

空白图表的产生原因是什么?我在这里错过了什么?

您必须在 ggplot() 中定义要用于 geom_smooth 的数据。此代码有效:

ggplot(data=SleepStudy, aes(y = GPA,x = ClassYear)) +
  geom_smooth(data=SleepStudy, method='lm', formula=y~x)+
  geom_line(data=fit2_line, aes(x=ClassYear, y=GPA)) + 
  geom_point(data=SleepStudy, aes(x=ClassYear, y=GPA))