3.1 简介
ggplot2的理论基础:图形 图层语法
对于普通用户而言,使得图形的重复更新变得更简单
对于开发人员而言,图层语法使得向ggplot2里添加新功能变得更方便
3.2 耗油量数据
该数据集记录了美国1999年和2008年部分汽车的制造厂商、型号、类别、引擎大小、传动系和耗流量等信息
cty和hwy分别记录城市和高速公路驾驶时的耗油量(英里每加仑)
library(ggplot2)
head(mpg,10)
?mpg
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
3 audi a4 2.0 2008 4 manual(m6) f 20 31 p compact
4 audi a4 2.0 2008 4 auto(av) f 21 30 p compact
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compact
6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compact
7 audi a4 3.1 2008 6 auto(av) f 18 27 p compact
8 audi a4 quattro 1.8 1999 4 manual(m5) 4 18 26 p compact
9 audi a4 quattro 1.8 1999 4 auto(l5) 4 16 25 p compact
10 audi a4 quattro 2.0 2008 4 manual(m6) 4 20 28 p compact
引擎大小和耗油量有什么关系?
3.3 绘制散点图
qplot(displ,hwy,data = mpg,colour = factor(cyl))
通过该图,发现影响耗油量的一个很重要的因素:发动机的排量大小
图形属性与数据的映射
散点图,每个观测数据都用一个点(.)来表示
每个点不仅有横坐标和纵坐标,还有大小、颜色和形状,这些属性称之为 图形属性(aesthetics)
每个图形属性都可以映射为一个变量或者设定成一个常数
上图中,变量displ控制点的水平位置,变量hwy控制点的竖直位置,变量cyl控制点的颜色
点的大小和形状没有指定映射的变量,使用的是默认值
除了用点表示数据,我们也可以使用线或条(虽然没有什么意义,但语法是正确的)
qplot(displ,hwy,data = mpg,geom = "line")
qplot(displ,data = mpg,geom = "bar")
点,线和条都是几何对象的具体形式,被称作geom,几何对象决定了图形的"类型"。
标度变换
数据集中的数值对于电脑没有任何意义,我们需要把他们从数据单位(如气缸数,英里每加仑)转换成电脑可以识别的物理单位(如像素和颜色)
这个转换过程称之为 标度变换(scaling)
水平位置x,竖直位置y,只需将数据的范围线性映射到[0,1]的区间上即可
颜色用6个字母组成的十六进制字符来表示,大小和形状分别用数字和整数表示
最后,对这些数据进行渲染,生成能在屏幕上展示的图形对象
3.4 更复杂的图形示例
qplot(displ,hwy,data = mpg,facets = .~year) + geom_smooth()
平滑曲线层与散点层的不同点在于它没有展示原数据
而是展示了统计变换后的数据。
因为添加了统计变换,所以在进行标度变换时需要添加额外的步骤
因为现在我们有多个数据集,所以需要确保所有的变换在各个数据集里都是相同的
标度变换实际上出现在三个地方:
标度转换(transforming),标度训练(training)和标度映射(mapping)
之前的双对数(log-log)图中看到了标度转换,数据值不是线性映射到图形上的位置,而是进行了对数变换
3.5 图层语法的组件
总的来说,图层语法所定义的图由以下几部分组成
一个默认的数据集和一组从变量到图形属性的映射
一个或多个图层,每个都由一种几何对象、一种统计变换和一种位置调整组成
标度,每个图形属性映射都对应一个标度
一个坐标系统
分面设定
3.5.1 图层
图层的作用是生成在图像上可以被人感知的对象,一个图层由4部分组成:
# 数据和图形属性映射
# 一种统计变换
# 一种几何对象
# 一种位置调整方式
3.5.2 标度
标度控制数据到图形属性的映射,并且图形上所有的每一个图形属性都对应一个标度。
每个标度都作用与图形中的所有数据,以确保从数据到图形属性映射的一致性。
3.5.3 坐标系
坐标系,coord,可将对象的位置映射到图形平面上,位置通常由两个坐标(x,y)决定
3.5.4 分面
分面是条件绘图和网格绘图的一般形式,通过它你可以方便的展示数据的不同子集。