ggplot2的理论基础:图形图层语法, 是由Wilkinson(2005)创建的一套用来描述所有统计图形深层特征的语法规则, Wickman(2010)提出了基于Wilkinson语法的图层图形语法,将图层作为主要的考察对象,并使其嵌入到R中。
图形图层语法告诉我们,一张统计图形就是从数据到几何对象(geometric object,缩写为geom,包括点、线、条形等)的图形属性(aesthetic attributes,缩写为aes,包括颜色、形状、大小等)的一个映射。此外,图形中还可能包括数据的统计变换(statistical transformation,缩写为stats),最后绘制在某个特定的坐标系(coordinate system,缩写为coord)中,而分面(facet)则可以用来生成数据不同子集的图形。
一个图形对象就是一个包含数据、映射、图层、标度、坐标和分面的列表。
绘图的方式有两种:一是一步到位式,如qplot()命令,二是逐层叠加式,如ggplot()函数和图层函数。一个图形可能包含多个图层。
一个图层由五个部分组成:
图层是普通的R对象,可以存储到变量中去,有利于代码的避繁就简。
比较下面两条命令的区别:
ggplot(mtcars, aes(mpg, wt)) +
geom_point(color = "darkblue")
ggplot(mtcars, aes(mpg, wt)) +
geom_point(aes(color = "darkblue"))
答:第一条命令实际上是先创建了一个只含有“darkblue”字符的变量,然后将color映射到这个新变量上,因为这个新变量是离散型的,所以默认的颜色标度将用色轮上等间距的颜色。
统计变换生成变量的名字必须要用 . . 围起来,这样可以防止原数据集中的变量和生成变量重名时造成混淆,并且可以清晰地分辨出哪些变量是由统计变换生成的。如以下命令:
ggplot(diamonds, aes(carat)) +
geom_histogram(aes(y = ..density..), binwidth = 0.1)
位置调整多见于处理离散型数据,常用的五种位置调整参数:
名称 | 描述 |
---|---|
dodge | 避免重叠,并排放置 |
fill | 堆叠图形元素并将高度标准化为1 |
identity | 不做任何调整 |
jitter | 给点添加扰动避免重合 |
stack | 将图形元素堆叠起来 |
具体使用哪种几何对象用于展示数据的分布,取决于分布的维度、分布是连续型还是离散型,以及条件分布还是联合分布。
对于一维连续型变量,最重要的集合对象是直方图,常用的参数包括 binwidth 和 breaks。
遮盖绘制及其处理:
研究两个连续型变量间关系时常常绘制散点图,当数据量很大时,这些点经常会出现重叠现象,从而掩盖真实的关系,根据这种图形做出的任何推论都值得怀疑,这种问题称为遮盖绘制。常用的处理方法如下:
添加图形注解
添加图形注解有两种基本的方法:逐个添加或批量添加。逐个添加的方式适合少量的、图形属性多样化的注解。如果需要添加多个具有类似属性的注解,可以将他们放到数据框中并一次添加完成更为有效。
常用的添加注解命令:
命令 | 功能 |
---|---|
geom_text | 添加文字叙述或为点添加标签 |
geom_vline, geom_hline | 向图形添加垂直线或水平线 |
geom_abline | 向图形添加任意斜率和截距的直线 |
geom_rect | 用来强调图形中感兴趣的矩形区域 |
geom_line, geom_path, geom_segment | 可以添加直线,使用arrow参数在线上放置一个箭头 |
标度控制着数据到图形属性的映射,将数据转换为视觉上可以感知的东西:例如大小、颜色、位置或形状。读图时所使用的工具:坐标轴和图例(统称为引导元素)。
在 ggplot2 中,所有的标度构建器都拥有一套通用的命名方案:它们以 scale_ 开头,接下来是图形属性的名称(例如 color_,shape_,x_),最后以标度的名称结尾(例如gradient,hue 或 manual)。
四种标度类型:
标度的通用参数:
图例和坐标轴的内容是由标度控制的,而渲染的细节是由主题系统控制的。
分面的用法:切割数据生成一系列小联号图,每个小图表示不同的数据子集。分面可以快速地分析出数据各子集模式的异同。
ggplot2 提供两种分面类型:网格型(facet_grid)和封装型(facet_wrap).
对于两种分面,可以通过调整参数 scales 来控制面板的位置标度是相同(固定)还是允许变化(自由)。
设定标度范围和设定坐标系范围的差异:
答:当设定标度范围时,任何超出此范围的数据都会被删除;但当设定坐标系范围时,使用的仍是所有的数据,只不过只展示一小片图形区域,好比用放大镜看图形。
图形的视觉呈现是由数据和非数据部分决定,主题系统控制着图形中的非数据元素外观,不会影响几何对象和标度等数据元素。
主题的控制包括标题、坐标轴标签、图例标签等文字调整以及网格线、背景、轴须的颜色搭配。
主题元素函数的四个基础类型:文本(text)、线条(lines)、矩形(rectangles)、空白(blank)。