传统的画图函数(如plot、qplot)就好比在一张画布上画图,画好之后不能修改,而且只能使用一个数据集;而图层的思想是在多张透明的画布上绘图,再把这些画布按顺序叠加在一起形成一个完整的图形。每一张画布都可以使用不同数据集,可以单独对每一个图层进行修改,需要到哪些图层就画哪些图层。
##1.创建绘图对象
在用 ggpot()绘制时,需先创建绘图对象,也就是第一个图层,它包含两个参数(数据与图形属性映射)。 这两个参数是绘制图形的默认参数,如果后面图层中没有重新设定新参数,那么它会自动调用绘图对象中的参数;如果重新设定了参数则不会使用默认的参数,参数在2.1 中有详细说明。
ggplot(data, aes(x, y, <other aesthetics>))
欢迎使用Markdown编辑器写博客
图层的作用是在图像上生成可以被人感知的对象。一个图层有4 个部分组成:
- 数据和图形属性映射;
- 一种统计变换;
- 一种几何对象;
- 一种位置调整方式。
图层的具体函数如下:
geom_XXX(mapping, data, …, stat, position)
stat_XXX(mapping, data, …, geom, position)
-
mapping(可选):一组图形属性映射,通过aes()函数来设定;
-
data(可选):数据框。如果不设定该参数,则会调用绘图对象中的默认数据集。
-
注意:在绘图对象ggplot()与图层中,mapping 与data 的位置是相反的;
-
…:geom 或者 stat 的参数。可以是用图形属性作为参数,这样该属性就被设定
为固定的一个值,而不是被映射给数据集中的一个变量; -
geom 或stat(可选):我们可以修改geom 默认的stat 值,或者stat 默认的geom
值。它们是一组字符串,包含了将要使用的几何对象或者统计变换的名称。 -
position(可选):选择一种调整对象重合的方式。
###2.1 数据与图层映射
- data 是数据集,数据类型必须是数据框,可选;
- **aes()**函数用来将数据变量映射到图形中,从而使变量成为可以被感知的图形属性;
- x、y 是映射到x、y 轴上的变量。
对于已经创建好的绘图对象,可以进行以下操作,以达到添加、修改、删除图形映射属性的效果。例如:
p <- ggplot(mtcars, aes(x=mpg,y=wt))
操作 | 结果 |
---|---|
p + aes(colour = cyl) | 添加colour 属性映射 |
p + aes(y = disp) | 修改y 轴映射属性 |
p + aes(y = NULL) | 删除 y 轴的映射属性 |
图层可以添加到 ggplot()与 qplot()创建的图形对象上。实际上 qplot()绘图原理是先创建绘图对象再添加图层,而相比于 ggplot(),只能针对于一个数据集。
图层之间用“+”连