R语言 ggplot2()绘制散点图并添加简单线性拟合

#R语言 ggplot2()绘制散点图并添加简单线性拟合

#加载数据
attach(mtcars)

#线性拟合
data.lm <- lm( mpg ~ wt, data = mtcars)

#拟合的公式
formula <- sprintf("italic(y) == %.2f %+.2f * italic(x)",
                   round(coef(data.lm)[1],2),round(coef(data.lm)[2],2))
#拟合的r2
r2 <- sprintf("italic(R^2) == %.2f",summary(data.lm)$r.squared)
#拟合的p值
p <- sprintf("italic(p) == %.2f",summary(data.lm)$coefficients[2,4])

#将拟合的公式和r2整合为数据框
labels <- data.frame(formula=formula,r2=r2,p=p,stringsAsFactors = FALSE);   labels



#使用ggplot2绘制带拟合线(平滑曲线)的散点图

#加载所需的包
library(ggplot2)
library(splines) #绘制线性拟合的包



###ggplot2()绘图**************
ggplot(mtcars,aes(mpg,wt,color = cyl)) +  #若cyl是分类变量则会显示不同颜色,而不是连续的
  geom_point(size = 2) + 
  geom_smooth(method = "lm",se = T,         #se = T表示添加置信区间
              alpha = I(0.5),col = "red") +  #alpha = I(0.5)为调节误差线透明度
 
  #添加拟合线及公式和标签
  geom_text(data=labels,mapping=aes(x = 28,y= 5,label=formula),
            parse = TRUE,inherit.aes = FALSE,size = 7) +
  #inherit.aes = FALSE表示重新定义美学,默认为TRUE
  geom_text(data=labels,mapping=aes(x = 28,y=4.6,label=r2),
            parse = TRUE,inherit.aes = FALSE,size = 7) +
  geom_text(data=labels,mapping=aes(x = 28,y=4.2,label=p),
            parse = TRUE,inherit.aes = FALSE,size = 7) +
  theme_bw() +  #去除背景色
  #标题系列
  labs(title = "Regression of MPG on Weight",
       x = "MPG: Miles/(US) gallon",
       y = "WT: Weight (1000 lbs)",size = 7)
 

绘图结果如下所示:

本图示只是粗略展示结果,还有很多细节可以调整,包括图例,坐标轴字体,位置等,但不在本文讨论范围之内

来源:公众号 生态学数据分析

收藏

共0条 1

登录 后发表评论。没有帐号? 注册 一个。

2019-06-25 17:50:19 45 次浏览 0 个评论