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

时间:2017-12-05 20:26:36

标签: r ggplot2 lm

我的目标是生成一个图表,显示使用连续变量和分类变量的回归线之间的差异。我正在使用的是#34; SleepStudy"来自Lock5Data的数据集,我希望显示将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

生成空白图表是什么?我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

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

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))