本书全面介绍了如何利用R语言绘制各种统计图形,书中的所有统计图形都给出了实例源代码,读者可以通过代码进行复现。本书共13章,涵盖的主要内容有R语言数据可视化简介;数据处理与探索;数据可视化;单变量图形绘制;两个同类型变量的图形绘制;离散变量和连续变量之间的图形绘制;高维图形绘制;其他图形绘制;图形元素、标题和图例;颜色等参数的调整;合并多幅图形;R语言绘图包;Shiny工具包。
本书适合R语言数据可视化入门与进阶读者阅读,也适合数据分析和数据挖掘的从业者及其他数据科学从业者阅读。另外,本书还适合统计学、计算机、机器学习和数学等相关专业的本科生及研究生作为参考读物。
前言
第1章 R语言数据可视化简介1
1.1 R语言介绍1
1.1.1 向量3
1.1.2 列表3
1.1.3 矩阵4
1.1.4 数组5
1.1.5 因子5
1.1.6 数据框6
1.1.7 for循环7
1.1.8 条件判断8
1.1.9 函数9
1.2 Rstudio介绍12
1.3 R包介绍13
1.4 R语言数据读取14
1.4.1 读取Excel数据15
1.4.2 读取SPSS、SAS和STATA数据17
1.5 ggplot2介绍18
1.5.1 使用qplot函数快速绘图19
1.5.2 使用ggplot函数绘图20
1.6 统计图形22
1.6.1 散点图22
1.6.2 箱线图24
1.6.3 小提琴图25
1.6.4 条形图27
1.6.5 和弦图28
1.6.6 桑基图30
1.6.7 棒棒糖图31
1.6.8 克利夫兰点图32
1.6.9 艺术图34
1.7 tidyverse介绍38
1.8 总结41
第2章 数据处理与探索42
2.1 数据转换42
2.1.1 筛选数据集的行42
2.1.2 筛选数据集的列46
2.1.3 数据排序及新变量生成48
2.1.4 数据分组汇总49
2.1.5 数据合并50
2.2 数据重塑54
2.2.1 数据聚合55
2.2.2 数据分散56
2.2.3 数据切割57
2.2.4 数据合并58
2.3 总结59
第3章 数据可视化60
3.1 ggplot2核心概念60
3.1.1 散点图62
3.1.2 折线图64
3.1.3 条形图66
3.1.4 直方图68
3.1.5 密度图72
3.1.6 箱线图75
3.2 总结79
第4章 单变量图形绘制80
4.1 面积图80
4.1.1 面积图的绘制方式82
4.1.2 绘制堆叠的面积图85
4.1.3 绘制比例堆叠面积图88
4.2 密度图90
4.2.1 基础密度图95
4.2.2 绘制少量分组的密度图96
4.2.3 绘制大量分组的密度图101
4.2.4 密度图的其他调整103
4.3 直方图105
4.3.1 基础直方图107
4.3.2 分组直方图的绘制109
4.3.3 合并直方图与密度图111
4.4 频率图113
4.5 总结114
第5章 两个同类型变量的图形绘制115
5.1 散点图115
5.1.1 绘制基础散点图118
5.1.2 绘制分组散点图121
5.1.3 添加拟合曲线127
5.1.4 在散点图中添加地毯图130
5.1.5 在散点图中添加文本136
5.2 抖动点图140
5.3 连续二维分布图142
5.3.1 绘制二维直方图143
5.3.2 绘制六角直方图144
5.3.3 绘制二维密度直方图145
5.3.4 调整图形配色147
5.4 线图148
5.4.1 绘制基础线图155
5.4.2 绘制连线图160
第6章 分类变量和连续变量的图形绘制163
6.1 箱线图163
6.1.1 绘制基础箱线图174
6.1.2 调整参数175
6.1.3 调整箱线图组别的顺序176
6.1.4 调整颜色183
6.1.5 构建分组箱线图191
6.1.6 调整箱线图的宽度193
6.1.7 构建连续变量的箱线图194
6.1.8 添加平均值195
6.1.9 添加抖动点196
6.2 小提琴图197
6.2.1 绘制基础的小提琴图200
6.2.2 绘制水平的小提琴图201
6.2.3 在小提琴图中添加箱线图203
6.3 棒棒糖图204
6.3.1 绘制分组的棒棒糖图209
6.3.2 绘制基础棒棒糖图217
6.3.3 棒棒糖图参数的调节219
6.3.4 添加标注224
6.4 条形图226
6.4.1 绘制基础条形图229
6.4.2 改变条形图宽度235
6.4.3 添加误差棒235
6.5 圆形条形图241
6.5.1 绘制基础圆形条形图250
6.5.2 添加标签252
6.5.3 圆形条形图的更多调整253
6.6 饼图259
6.6.1 绘制基础饼图263
6.6.2 调整细节264
6.6.3 添加标签265
6.7 甜甜圈图266
第7章 高维图形绘制270
7.1 气泡图270
7.1.1 绘制基础气泡图274
7.1.2 控制气泡的大小275
7.1.3 设置颜色276
7.1.4 调整更多的细节277
7.1.5 绘制动态图279
7.2 三维散点图280
7.3 流型图282
7.3.1 绘制基础流型图285
7.3.2 调整流型图的偏移286
7.3.3 调整流型图的形状与颜色287
7.4 相关矩阵图288
7.5 树状图291
7.5.1 绘制基础树状图295
7.5.2 绘制圆形树状图297
7.5.3 绘制聚类结果的树状图298
7.5.4 更多调整302
7.6 圆形包装图308
7.6.1 具有一个层次的圆形包装图310
7.6.2 调整颜色311
7.6.3 调整圆形之间的距离315
7.6.4 绘制多层次的圆形包装图315
7.6.5 调整细节317
7.6.6 隐藏第一级321
7.7 树形图325
7.7.1 绘制基础树形图326
7.7.2 绘制带有多个级别的树形图327
7.7.3 自定义树形图328
第8章 其他图形绘制332
8.1 和弦图332
8.1.1 绘制圆形图334
8.1.2 绘制基础和弦图337
8.1.3 调整细节340
8.2 桑基图343
8.3 网络图347
8.3.1 绘制基础网络图356
8.3.2 调整网络图的参数358
8.3.3 网络图布局361
8.3.4 将变量映射到节点和链接特征362
8.3.5 使用网络图可视化聚类结果364
8.4 旭日图366
8.5 雷达图368
8.5.1 绘制雷达图374
8.5.2 绘制多组雷达图375
8.6 词云376
8.6.1 绘制词云378
8.6.2 调整颜色和背景颜色379
8.6.3 调整形状381
8.6.4 调整单词方向382
8.7 平行图383
8.7.1 绘制基础平行图389
8.7.2 自定义颜色、主题和外观390
8.8 时间序列图391
8.8.1 时间序列包dygraphs396
8.8.2 时间序列热图397
8.9 交互式图形399
8.9.1 散点图400
8.9.2 气泡图401
8.9.3 面积图402
8.9.4 条形图404
8.9.5 饼图405
8.9.6 桑基图406
8.9.7 误差棒图408
8.9.8 箱线图409
8.9.9 直方图411
8.9.10 二维直方图413
8.9.11 二维轮廓直方图414
8.9.12 小提琴图415
8.9.13 雷达图416
8.9.14 热图418
8.9.15 三维散点图418
8.9.16 动画图420
8.9.17 调整图形图例421
8.9.18 修改交互文本422
8.10 动画图423
8.10.1 绘制基础动画图424
8.10.2 使用分面425
8.10.3 动态变化图形426
第9章 图形元素、标题和图例绘制429
9.1 添加图形元素429
9.2 主标题、轴标签和图例标题432
9.2.1 改变标签的外观434
9.2.2 修改图例436
9.2.3 修改图例的位置和外貌436
9.2.4 使用guides函数修改图例440
第10章 颜色等参数的调整445
10.1 图形颜色调整445
10.1.1 使用单个颜色调整图形446
10.1.2 通过分组调整颜色448
10.1.3 渐变或连续颜色455
10.2 点的形状、颜色和大小的调整457
10.3 线条类型调整460
10.4 坐标轴范围调整462
10.5 坐标轴转换465
10.6 时间数据坐标轴468
10.7 自定义标签471
10.8 图形主题和背景颜色477
10.9 自定义图形的背景480
10.10 删除面板边框和网格线481
10.11 ggthemes包482
10.12 文本注释483
10.13 ggrepel包485
10.14 添加直线488
10.15 图形翻转和反向490
10.16 分面491
第11章 合并多幅图形499
11.1 合并多幅图形到一张图中499
11.2 gridExtra包502
11.3 添加边际分布图505
11.4 在ggplot中插入一个外部图形元素506
第12章 R语言绘图包509
12.1 ggstatsplot包509
12.2 ggfortify包520
12.2.1 生存分析520
12.2.2 时间序列图521
12.2.3 密度图523
12.2.4 时间序列预测图524
12.2.5 聚类图527
12.2.6 热力图530
12.2.7 主成分分析可视化532
12.3 quantmod包535
第13章 Shiny工具包544
13.1 Shiny工具包简介544
13.2 Shiny App的基础部分548
13.3 Shiny示例550
13.4 Shiny总结553
13.5 制作一个Shiny程序554
13.6 Shiny部署556