**此文内容来自微信公众号:R语言搬运工,关注公众号浏览更多精彩内容**

上一篇介绍了使用ggplot2绘制散点图,通过散点图可以大致看出数据的分布规律,然而,现实中如果数据点较多,数据展示的分布趋势并不是十分的明显,这时候就需要通过拟合一条或者多条曲线可以更直观的获得数据的分布趋势。在ggplot2中,geom_smooth函数用来向散点图中添加拟合曲线,并且可以根据分组添加几条拟合曲线,方便快捷的绘制漂亮的拟合图。

1.使用mtcars数据进行展示具体的操作方法,通过不同拟合方法展示拟合结果。
```
library(ggplot2)
data(mtcars)
mtcars2 <-mtcars
ggplot(mtcars2, aes(wt, mpg,fill=gear))+
geom_point(size=6,shape=21)+
geom_smooth(method= "lm")
```

图中展示了wt变量和mpg变量的线性拟合结果,当然,这里没有对数据进行分组,尽管颜色映射给了变量gear。通过分类变量进行分组拟合,将会得到不同的结果:
```
library(ggplot2)
data(mtcars)
mtcars2 <- mtcars
mtcars2$gear <- as.factor(mtcars2$gear)
ggplot(mtcars2, aes(wt, mpg,fill=gear))+
geom_point(size=6,shape=21)+
geom_smooth(method = "lm")
```

通过添加分类变量,将数据分为三组分别进行拟合。
当然,这里只是用了lm直线拟合方法,同样可以选择一般线性模型glm、一般加性模型gam和曲线loess,具体的可看出图结果:




初图画好了,可能需要调整一下参数使得图看起来更加美观一些。比如,通过参数fullrange调节拟合曲线的延申;置信区间的有无以及填充颜色等


ggplot2中对散点图进行拟合曲线相对简单,可以将代码拷贝到R中进行训练学习,在科研绘图中,拟合曲线是不可或缺的一部分,同样也是生态学数据处理过程中非常重要的一步。
网友评论