第4章 用图层构建图像
每个图层孝可以有自己的数据集和图形属性映射,附加的数据元素可以通过图层添加到图形中。
4.2 创建绘图对象
ggplot()函数,有两个主要参数:数据和图形属性映射。这两个参数被设定为绘图的默认参数,只有在新添加的图层里设定新的参数时,默认值都会被修改。
数据data,指定绘图所用的默认数据集(必须是数据框dataframe);
映射mapping,将图形属性和变量名放至函数aes()内。
p
这个图形对象在加上图层之前无法显示。
4.3 图层
因为每一个几何对象都对应着一个默认的统计变换和位置参数,而每一个统计变换都对应着一个默认的几何对象参数,所以对于一个图层,我们只需要设定stat或geom参数即可。
geom_XXX(mapping, data, ..., stat, position)
stat_XXX(mapping, data, ..., geom, position)
它们的参数定义了图层的各种组件:
mapping(可选): 一组图形属性映射,通过aes()函数来设定;
data(可选):一个数据集,可以修改默认数据集;
...:geom或stat的参数,如直方图的组距(binwidth)或者loess曲线的带宽(bandwidth)。
geom或stat(可选):可以修改geom默认的stat值,或stat默认的geom值。它们是一组字符串,包含了将要使用的几何对象或统计变换的名称。
position(可选):选择一种调整对象重合的方式。
注意,在图形对象中一般先设定数据集,而在图层函数中一般先设定图形属性。
4.4 数据
数据集必须是一个数据框(data frame)。
数据是以副本而不是引用的形式存储到图形对象中。有两个好处:
如果数据变了,绘图不会改变;
ggplot2的对象都是自含型的(self-contained),可以被存储到磁盘上,并可以被直接加载运行(load())。
4.5 图形属性映射
aes()函数用来将数据变量映射到图形中,从而使变量成为可以被感知的图形属性。
aes(x=weight, y=height, colour=age)
4.5.1 图和图层
默认的图形属性映射可以在图形对象初始化时设定,
p
p + geom_point()
或者过后用+修改。
p + geom_point(aes(colour = factor(cyl))
p + geom_point(aes(y=disp))
p
p1
p2
p3
grid.arrange(p1, p2, p3, ncol=3)
unnamed-chunk-2-1.png
一个图层里设定的图形属性映射只对该图层起作用。因此第三张图只改变了坐标点(aes(mpg,disp)),并没有改变坐标轴标签(wt)。
4.5.2 设定和映射
除了可以将一个图形属性映射到一个变量,也可以在图层的参数将其设定为一个单一值,如colour="red"。
p
p1
p2
grid.arrange(p1,p2, ncol=2)
设定和映射的区别-1.png
第二张图,将将colour映射到“darkblue”颜色。实际上是先创建了一个只含有“darkblue"字符的变量,然后将colour映射到这个新变量。因为这个新变量的值是离散型的,所有默认的颜色标度用色轮上等间距的颜色,并且由于只有一个值,所以这个颜色就是默认的桃红色