ggplot2(三) 语法 part1

关于ggplot2的语法基础- 图层

首先绘制一张最简单的统计图:



qplot(displ, hwy, data = mpg, colour = factor(cyl))



量化:

在R中绘图时,我们往往用下表的格式来存储数据:


但是,这种格式对于计算机来说是毫无意义的。我们需要将数据单元(如,单位耗油量、气缸数)转化成计算机可以显示的物理单元(如,像素,颜色)。这个过程就被称作量化。但是,对于计算机而言有意义的数据我们又不一定能理解:颜色用四位十六进制数来表示,数字代表大小,整数代表一种形状。

在这一例中,我们有三个需要被量化的外观参数:水平位置(x),垂直位置(y)以及颜色。在这一例子中,对于位置的量化比较简单,因为我们用的是默认的线性量表。我们只需要将数据线性映射到0到1的范围内即可。这里我们用0到1的范围而不是实际的像素值,因为ggplot2应用的grid绘图体系会自动完成后续的转化。最后要将x与y结合从而定位数据点,这一步由座标系统(coord)完成。大多数情况下会采用笛卡尔座标系,但有时也会用到极座标系,绘制地图时会用到球形投影。

颜色的添加过程更加复杂一些,因为结果是非数值型的。然而,与人眼对于颜色的识别机制类似,计算机对颜色的编码也由三部分构成,这三部分构成一个三维的颜色空间。量化颜色也就转化为了找到特定颜色在该空间所对应的点。实现这一过程的方法有很多种,但是由于cyl是一个离散变量,我们可以在颜色空间上均匀的找到点来表示这些颜色,结果如下图所示。对于连续变量的转化与此并不相同。


上表所示的数据是计算机可以识别的。我们也将转化过的外观参数添加了上去。这样每一个点都已经被很好地定义过,R就可以将他们一一画下来了。

最后,我们就可以用这些元素画出想要的图形了。一个完整的图形往往包含以下几部分:点所代表的数据,量表以及座标系和附注。量表和座标系绘制座标轴以及图例,这样我们就可以从图中读出参数。附注添加图的名称和一些背景信息。

更复杂的图形:

了解了简单模型以后,下面我们看看稍微复杂一点的情况吧。下面的图形在一开始的基础上添加了新的元素:分面,多个图层以及统计数据。分面和图层扩展了上面提到的数据结构:每一个分面的每一个图层都有属于自己的数据集。你可以将它想象成是一个三维的数组:分面构成了二维平面,然后图层给予其在新的维度上的扩展。在这个例子中,不同图层上的数据是一样的,但是从理论上来讲,不同的图层中可以有不同的数据。

qplot(displ, hwy, data=mpg, facets = . ~ year) + geom_smooth()


下表是每个分面上的几行数据:


平滑图层与散点图图层的不同之处在于它不显示原始的数据,而是给出了统计方法处理过后的结果。而且,平滑图层会给出拟合的平滑曲线,这要求额外的步骤:在被转化成其对应的外观参数之后,数据将会由stat进行统计转化,对其进行一些非常有用的处理。在本例中,stat对数据进行loess平滑处理,并返回在自变量范围内的预测值。(其他有用的统计转化:1 and 2d binning, group means, quantile regression and contouring)

除了需要更多的步骤对数据进行处理,我们也需要一些额外的步骤对量表进行处理。因为我们现在有多个数据集(不同的分面,不同的图层),我们需要保证个数据集间的量表保持一致。量化的过程分为三步:转换,训练和对应。我们之前没有提到过转换,但是在做log-log图时有用到过。在log-log图中,数据与座标并不是线性对应的,而是要先经过对数转换。

量化在统计之前,因此stat是对量化后的数据进行的处理。这样可以保证在线性座标系中log(x) vs. log(y)与对数座标系中x vs. y的一致性。还有很多其他的转换可供选择:如平方根转换,对数转换和倒数转换。

统计过后,量表会在所有的图层和分面上进行调整。调整过程结合所有数据集以获得最终的取值范围。没有这一步,量表只对局部的数据有意义,而且由于无法对应,我们不能叠加不同的图层。有时,不同分面之间的量表可能不需要调整(但不同图层间必须调整)。

最后,量表与数据一一对应。这是一个局部过程:他们形成一个新的数据集。

流程示意图:





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章