在开始ggplot2的学习之前,可以先看下我之前的一篇博客,关于快速作图——qplot
1、ggplot2中的mpg数据集
第一步当然是加载ggplot2,读取数据,了解数据。
> library(ggplot2)
Warning message:
程辑包‘ggplot2’是用R版本3.6.3 来建造的
> mpg
# A tibble: 234 x 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
3 audi a4 2 2008 4 manual(m6) f 20 31 p compact
4 audi a4 2 2008 4 auto(av) f 21 30 p compact
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compact
6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compact
7 audi a4 3.1 2008 6 auto(av) f 18 27 p compact
8 audi a4 quattro 1.8 1999 4 manual(m5) 4 18 26 p compact
9 audi a4 quattro 1.8 1999 4 auto(l5) 4 16 25 p compact
10 audi a4 quattro 2 2008 4 manual(m6) 4 20 28 p compact
# ... with 224 more rows
> str(mpg)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 234 obs. of 11 variables:
$ manufacturer: chr "audi" "audi" "audi" "audi" ...
$ model : chr "a4" "a4" "a4" "a4" ...
$ displ : num 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
$ year : int 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
$ cyl : int 4 4 4 4 6 6 6 4 4 4 ...
$ trans : chr "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
$ drv : chr "f" "f" "f" "f" ...
$ cty : int 18 21 20 21 16 18 18 18 16 20 ...
$ hwy : int 29 29 31 30 26 26 27 26 25 28 ...
$ fl : chr "p" "p" "p" "p" ...
$ class : chr "compact" "compact" "compact" "compact" ...
cty 和 hwy 分别记录城市和高速公路驾驶耗油量(英里/加仑)
1 mile=1609.344 m;1 gal=3.785412L
displ 表示发动机排量(L)
drv 表示驱动系统:前轮驱动(f)、后轮驱动(r)和四轮驱动(4)
model 表示车辆型号,共有38种车型
class 表示车辆类别
全部变量的解释可以参考:mpg数据集内容
2、ggplot2图像的三个基本构成:数据、图形属性和几何对象
ggplot2 图像的三个基本构成:
1、数据
2、图形属性映射
3、几何对象
for example
ggplot(mpg,aes(x=displ,y=hwy))+geom_point()
它展现了由以下三个组件构成的散点图:
1、数据:mpg
2、图形属性映射:displ对应x轴,hwy对应y轴
3、几何对象:散点图
代码就像套公式,ggplot(mpg,aes(x=displ,y=hwy))+geom_point(),数据和图形属性映射包含在ggplot()中,而+可用来添加图层,随着学习的深入,+的东西会越来越丰富。
3、如何将变量映射到图形属性中
先补充一点,下面两行代码是一样的,默认先x后y。
ggplot(mpg,aes(x=displ,y=hwy))+geom_point()
ggplot(mpg,aes(displ,hwy))+geom_point()
然而这样做出来的图并不是我们想要的,因为不够美观。还需要进一步调整,比如:
#ggplot2通过 标度 可以将数据转换为图形属性。
ggplot(mpg,aes(displ,hwy,colour=class))+geom_point()#颜色
ggplot(mpg,aes(displ,hwy,shape=drv))+geom_point()#形状
ggplot(mpg,aes(displ,hwy,size=cyl))+geom_point()#大小
以第一个colour为例,不同类型的车一目了然。
那么,可以看出什么呢?比如发动机排量(displ)较大的双座车(2seater),油耗却不是最高的,所以固定油耗下行驶距离会更长。
ggplot(mpg,aes(x=displ,y=hwy))+geom_point(aes(colour="blue"))
ggplot(mpg,aes(x=displ,y=hwy))+geom_point(colour="blue")
为什么会这样呢?这就是“标度”的作用,可以体会一下,我不太会解释 。
最后,来了解一下“分面”。这个不用解释,目的就是把复杂的数据分一分类,做出来的图更直观。分面有两种类型,网格型和封装型,下面主要讨论更为常用的封装型。
ggplot(mpg,aes(displ,hwy))+geom_point()+facet_wrap(~class)
加上facet_wrap()即可,括号里是类别,别忘了波浪线~
4、如何指定不同的几何对象绘制各种各样的图形
聪明的你可能已经想到修改geom_point(),来画其他的图,恭喜你猜对了!
下面挑几个常用的图像类型展示一下:
No1、在图中添加平滑曲线
ggplot(mpg,aes(displ,hwy))+geom_point()+geom_smooth()
灰色部分表示逐点置信区间用以评估不确定性。如果不需要,可以输入geom_smooth(se=FALSE)。
- 平滑方式并不相同,method="loess"是数据量较小时的默认选项,使用局部拟合回归(可以查阅帮助?loess),曲线的平滑程度由参数span控制,取值范围0(很不平滑)到1(很平滑)。
示例:
ggplot(mpg,aes(displ,hwy))+geom_point()+geom_smooth(method="loess",span=0.2)
ggplot(mpg,aes(displ,hwy))+geom_point()+geom_smooth(method="loess",span=1)
但是,当数据量n超过1000时,loess并不适用,那该怎么办呢?下次再介绍
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)