《ggplot2:数据分析与图形艺术》笔记

《ggplot2:数据分析与图形艺术》笔记

第一章 简介

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_hex 函数。
  • 使用stat_density2d作二维密度估计,并将等高线添加到散点图中,或用着色瓦片直接展示密度,或使用大小与分布密度成比例的点进行展示。

添加图形注解

添加图形注解有两种基本的方法:逐个添加批量添加。逐个添加的方式适合少量的、图形属性多样化的注解。如果需要添加多个具有类似属性的注解,可以将他们放到数据框中并一次添加完成更为有效。

常用的添加注解命令:

命令 功能
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)。

四种标度类型

  • 位置标度:用于将连续型、离散型和日期时间型变量映射到绘图区域,以及构造对应的坐标轴。
  • 颜色标度:用于将连续型和离散型变量映射到颜色。
  • 手动离散型标度:用于将离散型变量映射到所选的符号大小、线条类型、形状或颜色,以及创建对应的图例。
  • 同一型标度:用于直接将变量值绘制为图形属性,而不去映射它们,如调色盘的绘制。

标度的通用参数

  • name:设置坐标轴或图例上出现的标签。
  • limits:固定标度的定义域。
  • breaks 和 labels:breaks控制着显示在坐标轴或图例上的值,labels指定了应在断点处显示的标签。

图例和坐标轴的内容是由标度控制的,而渲染的细节是由主题系统控制的。

第七章 定位

分面的用法:切割数据生成一系列小联号图,每个小图表示不同的数据子集。分面可以快速地分析出数据各子集模式的异同。

ggplot2 提供两种分面类型:网格型(facet_grid)和封装型(facet_wrap).

对于两种分面,可以通过调整参数 scales 来控制面板的位置标度是相同(固定)还是允许变化(自由)。

设定标度范围和设定坐标系范围的差异:

答:当设定标度范围时,任何超出此范围的数据都会被删除;但当设定坐标系范围时,使用的仍是所有的数据,只不过只展示一小片图形区域,好比用放大镜看图形。

第八章 精雕细琢

图形的视觉呈现是由数据和非数据部分决定,主题系统控制着图形中的非数据元素外观,不会影响几何对象和标度等数据元素。

主题的控制包括标题、坐标轴标签、图例标签等文字调整以及网格线、背景、轴须的颜色搭配。

主题元素函数的四个基础类型:文本(text)、线条(lines)、矩形(rectangles)、空白(blank)。

  • element_text() 绘制标签和标题,可以控制字体的family,face,color,size,hjust,vjust,angle,lineheight。
  • element_line() 绘制线条或线段,可以控制color,size,linetype。
  • element_rect() 绘制主要供背景使用的矩形,可以控制填充颜色(fill)和边界的color,size,linetype。
  • element_blank() 对元素不分配相应的绘图空间,可以删去不感兴趣的绘图元素。

你可能感兴趣的:(R语言空间数据分析与可视化,r语言,ggplot2,数据可视化)