第三章 R的绘图系统
目录:
- 3-1 三大绘图系统简介
- 3-2 基本绘图系统之基础知识
- 3-3 基本绘图系统之实践
- 3-4 基本绘图系统之全局变量
- 3-5 Lattice绘图系统之基础知识
- 3-6 Lattice绘图系统之实践
- 3-7 ggplot2绘图系统之基础知识
- 3-8 ggplot2绘图系统之qplot
- 3-9 ggplot2绘图系统之ggplot
- 3-10 R Color
- 3-11 图形设备
- 3-12 探索性数据分析
3-1 三大绘图系统简介
基本绘图系统(Base Plotting System)
- 艺术家的调色板:绘图始于空白帆布(需要事先计划;直观地实时反映绘图和分析数据的逻辑)
- 两个步骤 = 画图 + 修饰/添加 = 执行一系列函数
- 适于绘制2D图
Lattice绘图系统(Lattice Plotting System)
- 绘图 = 使用一次函数调用(一次成图)
- 特别适用于观察变量间的交互:在变量z的不同水平,变量y如何随变量x变化
ggplot2绘图系统(ggplot2 Plotting System)
- The Grammar of Graphics
- 图:动词、名词、形容词等
- 数据映射到几何客体(points/lines/bars)的美学属性(颜色/形状/大小)
- 基本绘图系统 + Lattice绘图系统
- 自动处理标题/文字说明/空间等,但也允许通过添加注释进行修改
3-2 基本绘图系统之基础知识
绘图函数(graphics包)
- plot(散点图) / hist(柱状图) / boxplot(箱图) / points(点) / lines(线) / text(添加文本) / title(命名) / axis(坐标轴)
- 调用函数会启用一个图形设备(如果没有正在运行的图形设备)并在设备上绘图
- 基本绘图系统 + 屏幕设备上的绘图
plot()
- 调用格式:plot(x, y, …)
- 重要参数:xlab(x轴标签) / ylab(y轴标签) / lwd(线的宽度) / lty(线的类型) / pch(点的类型) / col(图的颜色) …
- 了解其他重要参数:?par
par()
- 用于设置全局参数(作用于R中的所有plot绘图)
- bg(背景色) / mar(边距) / las(排版) / mfrow(按行的形式填充) / mfcol(按列的形式填充)
- 这些参数可以在每次plot之前进行修改(可以不作用于全局的plot绘图)
3-3 基本绘图系统之实践
基本绘图系统绘图步骤:
- 使用基本绘图工具绘图
- 添加/修饰
绘图
1. 柱状图
2. 箱图
3. 并排箱图
4. 散点图
添加/修饰
1. 添加title
2. 设置type = n
3. 设置不同颜色
4. 添加回归线
5. 添加图例说明
3-4 基本绘图系统之全局参数
1. 查看默认的全局参数
2. 设置全局参数
3-5 Lattice绘图系统之基础知识
绘图函数(lattice包)
- xyplot(散点图) / bwplot / histogram(柱状图) / stripplot / dotplot(点图) / splom / levelplot / contourplot
- 格式:xyplot(y(因变量) ~ x(自变量) | f * g(分类变量), data)
- panel函数,用于控制每个面板内的绘图
绘图函数(grid包):
- 实现了独立于base的绘图系统
- lattice包是基于grid包创建的,很少直接从grid包中调用函数
Lattice与Base的重要区别:
- Base绘图函数直接在图形设备上绘图
- Lattice绘图函数返回trellis类对象(打印函数真正执行了在设备上绘图。但在命令执行时,trellis类对象会被自动打印,所以看起来就像时lattice函数直接完成了绘图)
3-6 Lattice绘图系统之实践
1. 使用xyplot函数,生成普通散点图
2. 加入分类变量
3. 验证xyplot函数会返回一个对象,而不是直接输出图
4. 绘图举例
5. 自定义面板样式
3-7 ggplot2绘图系统之基础知识
最高大上的绘图系统ggplot2:
- 层(Layer):不同的层对应着不同词性的词,比如:动词、名词、形容词。
- 第一种层:数据(感兴趣的变量)
- 第二种层:是和美学属性相关的,比如:x轴,y轴,颜色,填充的颜色,形状,标签等等。
- 第三种层:几何课题层,比如:点图、线、柱状图等等
- 第四种层:面,绘图面板的划分
- 第五种层:统计层,可以给图中添加统计信息
- 第六种层:是坐标系,是笛卡尔坐标系还是极坐标系
- 第七种层:是主题,也就是和数据本身无关的风格的设置。
绘图函数qplot():
- 类似于Base系统的plot(),参数包含aesthetics/geom/facet
- 隐藏了绘图实现的细节(灵活性欠佳)
绘图函数ggplot():
- 是整个绘图系统的核心,可以实现qplot()函数无法实现的功能
- 调用ggplot()本身并不能实现绘图,要在其几处上添加层(如:geom_point)才可以实现真正的绘图
3-8 ggplot2绘图系统之qplot
安装加载ggplot2包:
使用qplot函数绘制散点图:
设置其他的美学属性:color
设置其他的美学属性:shape
设置其他的美学属性:size
设置X,Y轴意义以及标题:
设置几何课题:geom
设置与面(facets层)有关的参数:
绘制柱状图:
绘制几何课题geom:频率分布轮廓线
绘制密度函数,也就是上面所说的”频率分布轮廓线“:
绘制点图dotplot:
3-9 ggplot2绘图系统是ggplot
使用ggplot绘制散点图:
设置散点图的样式参数:
在散点图中添加分类变量Month:
添加统计信息层:
设置显示统计信息层,而不显示几何客体层:
单独设置统计信息层的参数:
根据分类变量Month进行拟合:
在设置分类变量的情况下,仍然对整个数据集进行拟合:
同时设置两个统计层:
自定义绘图颜色:
设置不同的面板:
设置主题:
3-10 R ColorR语言绘图之颜色
grDevice包
- colorRamp() & colorRampPalette()
- 颜色名字可使用colors()获取
RColorRrewer包
- 三类调色板:sequential / diverging / qualitative
- 调色板信息可与colorRamp / colorRampPalette结合使用
使用colorRamp()函数,选取颜色:
使用colorRampPalette()函数,选取颜色:
加载RColorBrewer包,并查看包中调色板的颜色:
将RColorRrewer和colorRampPalette结合使用:
查看调色板的颜色:
3-11 图形设备
什么是图像设备:
- 屏幕设备(探索型分析常用):电脑屏幕(windows() on Windows / quartz() on Mac / xll() on Unix or Linux)
- 文件设备(打印/文章用图常用),分为(向量格式(vector format: PDF) 位图(bitmap format: PNG / JPEG / TIFF / BMP))
- grDevices包(包含了实现各种图形设备的代码/ ?Devices如 PDF / PNG / BMP)
生成图形的两种途径:
- 调用绘图函数(默认使用屏幕) ->屏幕设备显示图形 -> 进一步修饰图形
- 明确指定图形设备 -> 调用绘图函数(如果指定的是文件设备则无法在屏幕上看到图形)-> 进一步修饰图形 -> 关闭图形设备dev.off()
- 可同时打开多个图形设备,但一次只能在一个设备上绘图(dev.cur(): 找到当前活跃的设备 / dev.set():把指定设备设置为活跃的设备)
拷贝图形:
- 多个设备之间互相拷贝:dev.copy(拷贝到PDF为你教案:dev.copy2pdf)
- 注意:拷贝的结果可能与原图有出入
将图形绘制到文件设备中:
输出结果如下:
将屏幕上的图形,拷贝到文件设备中:
拷贝结果如下:
在绘图前请思考:
- 在哪儿绘图(屏幕?文件)
- 如何使用图(屏幕呈现?网页呈现?文章用图)
- 用于绘图的数据量的大小?(向量格式 vs. 位图)
- 是否许需要动态调整大小?(向量格式 vs. 位图)
- 用哪个绘图系统(Base / Lattic / ggplot2)? 一般三者不混用
3-12 探索性数据分析
探索性数据分析的目的:
- 了解数据特征、找到数据中的模式、形成分析策略
- 图与数字相互验证、帮助发现错误、用于交流结果
探索性数据分析的特点:
- 快速、通常呈现在屏幕设备
- 不需要过分注重图是否漂亮
请注重六大作图原则:
- 凸显比较(和谁比较?)
- 凸显机制(因果/机制/解释)
- 凸显多元性(>2个变量、逃离扁平)
- 整合证据
- 整合文字、数字、图、表等
- 用多种方式显示数据的特征
- 不要让工具主宰分析
- 使用适当的图标、尺度等
- 完备性、一图胜千言
- 内容是王道
- 研究问题的重要性 > 作图漂亮