在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)
但是它也不起作用。
一般来说,要提供自己的公式,应该使用参数x
和y
,它们将与您在ggplot()
提供的值相对应 – 在这种情况下, x
将被解释为x.plot
, y
被解释为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))
# 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)