购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 图层

图层是ggplot2的主要考察对象,主要由五个部分组成:数据集、映射、几何对象、统计变换、位置调整。在ggplot2中,用户通过符号“+”添加图层,图层的层层叠加构成了我们最终绘制的统计图。

本节主要介绍ggplot2中图层的概念及应用。

2.2.1 绘图对象

创建绘图对象是绘图的基础,在ggplot2工具包中,ggplot()函数用于创建绘图对象,该函数的语法如下:

数据data和图形属性映射mapping为该函数的两个主要参数。其中数据用于指定待可视化的数据集,其格式必须为数据框(data.frame())。数据以副本的形式存储在图像中,因此当数据发生改变时,已经绘制的图形不会有变化。

映射通过aes()函数将数据变量映射为图形属性,上一节的散点图示例中有:

该示例将x坐标映射到cty,y坐标映射到hwy。aes()函数中的“x=”“y=”可以省略,即可以直接写成aes(cty,hwy),效果与不省略时一致。值得一提的是,映射可以在创建绘图对象时就设定好,也可以后续通过符号“+”修改。

我们可以通过summary()函数查看图层信息:

绘图对象指定了待可视化的数据集,设定了图形属性的映射,构成了图层的基础部分,但此时ggplot2中并不会出现图形元素。

2.2.2 几何对象

绘图对象创建完成后,为了在ggplot2中生成图形元素,需要调用几何对象函数geom_xxx()。第2.1.2节的散点图示例中,我们就是调用了geom_point()函数才得以绘制的散点图。

在geom_point()函数中,我们仍通过aes()函数将数据变量映射为图形属性,colour=class表示将class的取值映射为散点的颜色,散点的颜色依据class取值的不同而不同,size=displ表示将displ的取值映射为散点的大小,发动机的排量越大,散点的大小就越大。

绘图对象和几何对象叠加后,便可在ggplot2中生成初始统计图,上述代码的绘图结果如图2-4所示。

不同几何对象具有的图形属性不同,需要设定的参数也不太一样。如,上述示例的散点图设置了散点的颜色和大小属性,条形图则需要设定条形的高度、宽度以及填充颜色属性等。表2-1列出了ggplot2中常用的几何对象。

表2-1 ggplot2中常用的几何对象

图2-4 初始统计图

2.2.3 统计变换

统计变换(stat)对数据进行某种运算处理,不同的计算方法对应不同的stat_xxx()函数。下面我们通过调用stat_smooth()函数计算给定x时y的均值,以此添加光滑的拟合曲线。

上述代码能够绘制出添加拟合曲线后的散点图,绘图结果如图2-5所示。

图2-5 添加拟合曲线后的散点图

在图形绘制中,几何对象与统计变换都被视作图层,geom_xxx()函数与stat_xxx()函数往往成对出现。每个几何对象的geom_xxx()函数中都包含一个stat参数,每个统计变换的stat_xxx()函数中都包含一个geom参数,它们的代码如下:

其中,mapping代表图形属性的映射,data为数据集,position代表位置调整,这些参数都不是必选参数。假设现在需要绘制一张均值散点图,第一种绘图方式调用了几何对象geom_point()函数,并将其中的stat参数设置为“summary”。第二种绘图方式调用了统计变换stat_summary()函数,并将其中的geom参数设置为“point”。前者侧重于图像类型的绘制,后者侧重于统计变换的过程,二者最终的绘图效果一致。它们的代码如下:

绘图结果如图2-6所示。

图2-6 均值散点图

如果将几何对象和统计变化分别写在各自的函数里,还能得到和上述一样的效果吗?我们来看下面的示例:

绘图结果如图2-7所示。

图2-7 添加均值后的散点图

可以看出图2-6完全不同于图2-7。正如之前所说,几何对象和统计变换都被视作一个图层,图2-6由一个几何对象函数geom_point()或一个统计变换函数stat_summary()绘制,图层数为1,而图2-7由一个几何对象和一个统计变换叠加而成,图层数为2,两张图从图层数目上就不一样。图2-6的绘制过程为先确认了将要绘制的图形为散点图,对数据集进行了求均值处理后再绘制最终的散点图。而图2-7的绘制过程为先绘制一个散点图,再在原图上叠加每个x的均值。

需要注意的是,大部分情况下我们会省略几何对象与统计变换中的参数data,因为在绘图对象ggplot()函数中已经设置了待可视化的数据集,该数据集之后将作为参数data的默认参数。若在geom_xxx()函数或stat_xxx()函数中设置了参数data,则默认数据集将被改变。表2-2列出了ggplot2中常用的统计变换。

表2-2 ggplot2中常用的统计变换

2.2.4 位置调整

我们在绘制图像的过程中,有时会遇到数据堆叠的问题,此时就需要对元素的位置进行调整。例如图2-4展示的散点图中,我们可以很明显地观察到黑点与灰点存在数据堆叠的现象。为了避免数据重合等问题,我们可以通过设置几何对象geom_xxx()函数或者统计变换stat_xxx()函数中的position参数达到数据位置调整的目的。下面的示例向图2-4中的点添加扰动,以避免数据重合。

绘图结果如图2-8所示。

图2-8 添加扰动后的散点图

数据重叠的情况多出现于离散型数据,因此位置调整一般用于离散型数据的绘图。表2-3列出了ggplot2中主要的位置调整参数。

表2-3 ggplot2中的位置调整参数

为了更好地展示ggplot2中的位置调整,下面的示例中我们将绘制设置了不同位置调整参数的条形图。

待可视化的数据集仍然为mpg,x轴变量为trans,填充色变量为cyl。

我们首先设置位置调整参数为堆叠,即"stack",绘图结果如图2-9所示。

图2-9 条形图(position="stack")

随后设置位置调整参数为堆叠,并将高度标准化为1,即"fill"。绘图结果如图2-10所示。

图2-10 条形图(position="fill")

最后设置位置调整参数为并列,即" dodge"。

绘图结果如图2-11所示。

图2-11 条形图(position="dodge") QDcwDrndXzf46GyvdG6zNpuRcH/UklA4LfpzcQrqH3TVBWVl/FO/MSic3TKePFlq

点击中间区域
呼出菜单
上一章
目录
下一章
×