PDF 60 / 520 The Layered Grammar of Graphics
English · PDF 60
Original PDF page 60
中文 · PDF 60

图形语法的分层结构

在前面的章节中,你学到的远不止如何绘制散点图、条形图和箱线图。你学到了一个基础,可以用它配合 ggplot2 绘制任何类型的图形。为了说明这一点,让我们在代码模板中加入位置调整、统计变换、坐标系和分面:

ggplot(data = <DATA>) +
  <GEOM_FUNCTION>(
    mapping = aes(<MAPPINGS>),
    stat = <STAT>,
    position = <POSITION>
  ) +
  <COORDINATE_FUNCTION> +
  <FACET_FUNCTION>

我们的新模板包含七个参数,即模板中出现在方括号里的词。在实践中,你很少需要提供全部七个参数来绘制图形,因为除了数据、映射和几何函数之外,ggplot2 会为其他所有内容提供有用的默认值。

模板中的七个参数构成了图形语法(grammar of graphics),这是一套用于构建图形的形式化系统。图形语法基于这样一个洞见:任何图形都可以唯一地描述为一个数据集、一个几何对象、一组映射、一个统计变换、一个位置调整、一个坐标系和一个分面方案的组合。

为了理解这是如何工作的,考虑一下你如何从零开始构建一个基本图形:你可以先从一个数据集开始,然后将其转换为你想要展示的信息(通过统计变换):

  1. diamonds 数据集开始

  2. 使用 stat_count() 为每个切工(cut)取值计算计数。

克拉 切工 颜色 净度 深度 台面 价格 x y z
0.23 理想 E SI2 61.5 55 326 3.95 3.98 2.43
0.21 优质 E SI1 59.8 61 326 3.89 3.84 2.31
0.23 良好 E VS1 56.9 65 327 4.05 4.07 2.31
0.29 优质 I VS2 62.4 58 334 4.20 4.23 2.63
0.31 良好 J SI2 63.3 58 335 4.34 4.35 2.75
... ... ... ... ... ... ... ... ... ...

stat_count()

切割 计数 比例
一般 1610 1
4906 1
很好 12082 1
优质 13791 1
理想 21551 1