《ggplot2:数据分析与图形艺术》
第4章 用图形构建图像
4.1 简介
qplot()的局限性在于它只能使用一个数据集和一组图形属性映射,解决这个问题的办法就是使用图层。每个图层可以有自己的数据集和图形属性映射,附加的数据元素可通过图层添加到图形中。
一个图层由5部分组成:数据,一组图形属性映射,几何对象,统计变换,位置调整。
4.2 创建绘图对象
在创建一个图形对象时,当使用qplot()添加图层并展示结果,在整个过程中使用了很多默认的绘图参数。
如果想手动创建图形对象,就要用到ggplot()函数。
该函数有两个主要的参数:数据和图形属性映射。
参数数据指定绘图所用的默认数据集(必须是数据框类型);映射是需要将图形属性和变量名放到函数aes()的括号里面。
> p <- ggplot(diamonds, aes(carat, price, colour=cut))
#diamonds是数据,aes()中的carat表示x轴的标度,price表示y轴的标度。
> print(p)
#绘制一个空的图,只有横纵坐标刻度和标度,因为数据映射还没有加入图层即几何对象。
ggplot(data = NULL, mapping = aes(), …, environment = parent.frame())
4.3 图层
数据映射未生成图形,需要加入一个图层即几何对象,不同图层之间用“+”来添加。
图层设定了一些可选的参数选项:
layer(geom, geom_params, stat, stat_params, data, mapping, position)
每个几何对象都对应着一个默认的统计变换和位置调整,每一个统计变换都对应着一个默认的几何对象参数,所以对于一个图层我们需要设定stat
或geom
参数即可。
例如:
geom_histogram(binwidth=2, fill="steelblue")
所有这类函数都有相同的形式,即以geom_
或stat_
开头:
geom_XXX(mapping, data, ..., stat, position)
stat_XXX(mapping, data, ..., geom, position)
它们的参数定义了图层的各个组件:
- mapping(可选):一组图形属性映射,通过aes()函数来设定;
- data(可选):一个数据集,他会修改默认的数据集;
- …:geom或stat的参数,例如直方图的组距(binwidth)或者loess光滑曲线的带宽(bandwi