2.2 ggplot2图形语法

在R语言中,ggplot2是最受欢迎的拓展工具包之一,也是本书的核心绘图工具之一。该工具包是由Hadley Wickham编写的,其提供一种全新的图形创建方法,将图层(layer)作为绘图的首要考虑对象,通过图形各图层之间的搭配组合,可实现优雅和实用的图形绘制。ggplot2包名称中的“gg”是grammar of graphics(图形语法)的缩写,而所谓的图形语法,简单地说就是将一个统计图形看作从数据到几何对象(geometric object,缩写为geom,包括点、线、条形等)的图形属性(aesthetic attribute,缩写为aes,包括大小、颜色、形状等)的一种映射。

根据ggplot2的绘图理念,一幅完整的插图由数据、美学映射以及几何对象等部分组成,即所有图形都由想要可视化的数据,以及一系列将数据中的变量与图形属性对应的映射(mapping)组成,主要映射组件如下。

图层(layer)是ggplot2中的基本组成单元,每个图层都由数据集、映射、几何对象和可选的统计变换(statistical transformation)几个关键要素组成。几何对象定义了要绘制的实际几何形状,例如,点、线、柱状图、箱线图等;统计变换是可选的,简称统计(stat),用于根据数据集进行汇总或转换,例如,可以使用统计变换计算每个组别的平均值、标准差或百分位数,并在图形中显示汇总结果。

标度(scale)的主要作用是将要绘制的数据映射到图形空间,如使用颜色(color)、大小(size)、形状(shape)来表示不同的取值。

坐标系(coord)主要描述了数据是如何映射到图形所在的平面的,还提供了坐标轴和网格线,方便查看数据。常用的坐标系为笛卡儿坐标系,有时也可以使用其他坐标系,如极坐标系和地理坐标系。

分面(facet)确定了如何将数据分解成各个数据子集,以及如何对数据子集进行绘图并按照行、列和网格形式展示结果。分面也称为条件作图或者网格作图。

主题(theme)可以实现对非数据元素(如字体大小、图形背景等)的调整,进而实现对统计图形的美化,以及个性化定制的绘制需求。

图2-2-1所示为ggplot2绘图基本语法结构,其中绿色部分为ggplot2绘图必选项,橙色部分为ggplot2绘图可选项。

图2-2-1 ggplot2绘图基本语法结构