在ggplot上添加回归线

我努力在ggplot上添加回归线。 我第一次尝试用abline,但我没有设法使其工作。 然后我试了这个…

data = data.frame(x.plot=rep(seq(1,5),10),y.plot=rnorm(50)) ggplot(data,aes(x.plot,y.plot))+stat_summary(fun.data=mean_cl_normal) + geom_smooth(method='lm',formula=data$y.plot~data$x.plot) 

但是它也不起作用。

一般来说,要提供自己的公式,应该使用参数xy ,它们将与您在ggplot()提供的值相对应 – 在这种情况下, x将被解释为x.ploty被解释为y.plot 。 有关平滑方法和公式的更多信息,可以在函数stat_smooth()帮助页面中find,因为它是由geom_smooth()使用的默认统计信息。

 ggplot(data,aes(x.plot,y.plot))+stat_summary(fun.data=mean_cl_normal) + geom_smooth(method='lm',formula=y~x) 

如果您使用的是您在ggplot()调用中提供的相同x和y值,并且需要绘制线性回归线,则不需要使用geom_smooth()的公式,只需提供method="lm"

 ggplot(data,aes(x.plot,y.plot))+stat_summary(fun.data=mean_cl_normal) + geom_smooth(method='lm') 

正如我刚才所想,如果你有一个模型适合多元线性回归 ,上述解决scheme将无法正常工作。

您必须手动创build行,作为包含原始dataframe的预测值的数据框(在您的案例data )。

它看起来像这样:

 # read dataset df = mtcars # create multiple linear model lm_fit <- lm(mpg ~ cyl + hp, data=df) summary(lm_fit) # save predictions of the model in the new data frame # together with variable you want to plot against predicted_df <- data.frame(mpg_pred = predict(lm_fit, df), hp=df$hp) # this is the predicted line of multiple linear regression ggplot(data = df, aes(x = mpg, y = hp)) + geom_point(color='blue') + geom_line(color='red',data = predicted_df, aes(x=mpg_pred, y=hp)) 

多LR

 # this is predicted line comparing only chosen variables ggplot(data = df, aes(x = mpg, y = hp)) + geom_point(color='blue') + geom_smooth(method = "lm", se = FALSE) 

单LR