编辑推荐
作者基于自己的RCookbook网站的内容写成本书,有很好的实用性。
书提供了快速绘制高质量图形的150多个精选的技巧,读者不需要了解R绘图系统的全部细节便可以掌握这些技巧。
书中的大多数方法使用的是以强大、灵活制图而著称的ggplot2包。
内容简介
R具有强大的统计计算功能和便捷的数据可视化系统。《R数据可视化手册》重点讲解R的绘图系统,指导读者通过绘图系统实现数据可视化。书中提供了快速绘制高质量图形的150多种技巧,每个技巧用来解决一个特定的绘图需求。读者可以通过目录快速定位到自己遇到的问题,查阅相应的解决方案。同时,作者在大部分的技巧之后会进行一些讨论和延伸,介绍一些总结出的绘图技巧。
《R数据可视化手册》侧重于解决具体问题,是R数据可视化的实战秘籍。《R数据可视化手册》中绝大多数的绘图案例都是以强大、灵活制图而著称的R包ggplot2实现的,充分展现了ggplot2生动、翔实的一面。从如何画点图、线图、柱状图,到如何添加注解、修改坐标轴和图例,再到分面的使用和颜色的选取等,本书都有清晰的讲解。虽然本书的大多数技巧使用的是ggplot2,但是并不仅仅局限于ggplot2的介绍。作者的理念是用合适的工具来完成合适的绘图任务,读者也可以学到许多其他有用的绘图函数和工具,来适应各种复杂的需求。
《R数据可视化手册》是学习R中丰富的数据可视化方法的专业手册,非常适合对R 语言有基本的了解的读者阅读。
作者简介
Winston Chang,Rstudio的软件工程师,致力于R中的数据可视化和软件开发工具的研发。他创立的网站“Cookbook for R”提供了R中常见问题的解决技巧。
肖楠,中南大学数学与统计学院统计学系在读博士,统计之都论坛R语言版版主。合作翻译出版了《R语言实战》、《ggplot2:数据分析与图形艺术》等图书,编写了protr、Rcpi等R软件包。关注领域为统计机器学习、化学信息学与生物信息学、定量与系统药理学。
邓一硕,毕业于中央财经大学统计与数学学院,统计之都论坛金融投资分析版版主,现效力于首钢总公司计财部。擅长的领域为时间序列分析以及数据挖掘在金融投资分析中的应用。
魏太云,毕业于中国人民大学统计学院,统计之都理事会主席。合作翻译出版了《ggplot2:数据分析与图形艺术》等图书,参与编写了corrplot、recharts、knitr以及fun等R软件包。感兴趣的主题包括统计建模、机器学习和数据可视化。
内页插图
精彩书评
★“这本书首先介绍了绘制常规图形的方法,然后展示了如何将它们调整为符合读者需要的图形。它不仅是R可视化方面的优秀读物,更以丰富的案例为我们提供了绘制图形的灵感源泉。”
——Hadley Wickham 莱斯大学助理教授
目录
第1章 R基础
1.1 安装包
1.2 加载包
1.3 加载分隔符式的文本文件
1.4 从Excel文件中加载数据
1.5 从SPSS文件中加载数据
第2章 快速探索数据
2.1 绘制散点图
2.2 绘制折线图
2.3 绘制条形图
2.4 绘制直方图
2.5 绘制箱线图
2.6 绘制函数图像
第3章 条形图
3.1 绘制简单条形图
3.2 绘制簇状条形图
3.3 绘制频数条形图
3.4 条形图着色
3.5 对正负条形图分别着色
3.6 调整条形宽度和条形间距
3.7 绘制堆积条形图
3.8 绘制百分比堆积条形图
3.9 添加数据标签
3.10 绘制Cleveland点图
第4章 折线图
4.1 绘制简单折线图
4.2 向折线图添加数据标记
4.3 绘制多重折线图
4.4 修改线条样式
4.5 修改数据标记样式
4.6 绘制面积图
4.7 绘制堆积面积图
4.8 绘制百分比堆积面积图
4.9 添加置信域
第5章 散点图
5.1 绘制基本散点图
5.2 使用点形和颜色属性,并基于某变量对数据进行分组
5.3 使用不同于默认设置的点形
5.4 将连续型变量映射到点的颜色或大小属性上
5.5 处理图形重叠
5.6 添加回归模型拟合线
5.7 根据已有模型向散点图添加拟合线
5.8 添加来自多个模型的拟合线
5.9 向散点图添加模型系数
5.10 向散点图添加边际地毯
5.11 向散点图添加标签
5.12 绘制气泡图
5.13 绘制散点图矩阵
第6章 描述数据分布
6.1 绘制简单直方图
6.2 基于分组数据绘制分组直方图
6.3 绘制密度曲线
6.4 基于分组数据绘制分组密度曲线
6.5 绘制频数多边形
6.6 绘制基本箱线图
6.7 向箱线图添加槽口
6.8 向箱线图添加均值
6.9 绘制小提琴图
6.10 绘制Wilkinson点图
6.11 基于分组数据绘制分组点图
6.12 绘制二维数据的密度图
第7章 注解
7.1 添加文本注解
7.2 在注解中使用数学表达式
7.3 添加直线
7.4 添加线段和箭头
7.5 添加矩形阴影
7.6 高亮某一元素
7.7 添加误差线
7.8 向独立分面添加注解
第8章 坐标轴
8.1 交换x轴和y轴
8.2 设置连续型坐标轴的值域
8.3 反转一条连续型坐标轴
8.4 修改类别型坐标轴上项目的顺序
8.5 设置x轴和y轴的缩放比例
8.6 设置刻度线的位置
8.7 移除刻度线和标签
8.8 修改刻度标签的文本
8.9 修改刻度标签的外观
8.10 修改坐标轴标签的文本
8.11 移除坐标轴标签
8.12 修改坐标轴标签的外观
8.13 沿坐标轴显示直线
8.14 使用对数坐标轴
8.15 为对数坐标轴添加刻度
8.16 绘制环状图形
8.17 在坐标轴上使用日期
8.18 在坐标轴上使用相对时间
第9章 控制图形的整体外观
9.1 设置图形标题
9.2 修改文本外观
9.3 使用主题
9.4 修改主题元素的外观
9.5 创建自定义主题
9.6 隐藏网格线
第10章 图例
10.1 移除图例
10.2 修改图例的位置
10.3 修改图例项目的顺序
10.4 反转图例项目的顺序
10.5 修改图例标题
10.6 修改图例标题的外观
10.7 移除图例标题
10.8 修改图例标签
10.9 修改图例标签的外观
10.10 使用含多行文本的标签
第11章 分面
11.1 使用分面将数据分割绘制到子图中
11.2 在不同坐标轴下使用分面
11.3 修改分面的文本标签
11.4 修改分面标签和标题的外观
第12章 配色
12.1 设置对象的颜色
12.2 将变量映射到颜色上
12.3 对离散型变量使用不同的调色板
12.4 对离散型变量使用自定义调色板
12.5 使用色盲友好式的调色板
12.6 对连续型变量使用自定义调色板
12.7 根据数值设定阴影颜色
第13章 其他图形
13.1 绘制相关矩阵图
13.2 绘制函数曲线
13.3 在函数曲线下添加阴影
13.4 绘制网络图
13.5 在网络图中使用文本标签
13.6 如何绘制热图
13.7 绘制三维散点图
13.8 在三维图上添加预测曲面
13.9 保存三维图
13.10 三维图动画
13.11 绘制谱系图
13.12 绘制向量场
13.13 绘制QQ图
13.14 绘制经验累积分布函数图
13.15 创建马赛克图
13.16 绘制饼图
13.17 创建地图
13.18 绘制等值区域图
13.19 创建空白背景的地图
13.20 基于空间数据格式(shapefile)创建地图
第14章 输出图形用以展示
14.1 输出为PDF矢量文件
14.2 输出为SVG矢量文件
14.3 输出为WMF矢量文件
14.4 编辑矢量格式的输出文件
14.5 输出为点阵(PNG/TIFF)文件
14.6 在PDF文件中使用字体
14.7 在Windows的点阵或屏幕输出中使用字体
第15章 数据塑形
15.1 创建数据框
15.2 从数据框中提取信息
15.3 向数据框添加列
15.4 从数据框中删除一列
15.5 重命名数据框的列名
15.6 重排序数据框的列
15.7 从数据框提取子集
15.8 改变因子水平的顺序
15.9 根据数据的值改变因子水平的顺序
15.10 改变因子水平的名称
15.11 去掉因子中不再使用的水平
15.12 在字符向量中改变元素的名称
15.13 把一个分类变量转化成另一个分类变量
15.14 连续变量转变为分类变量
15.15 变量转换
15.16 按组转换数据
15.17 分组汇总数据
15.18 使用标准误差和置信区间来汇总数据
15.19 把数据框从“宽”变“长”
15.20 把数据框从“长”变“宽”
15.21 把时间序列数据对象拆分成时间和数据
附录A ggplot2介绍
A.1 背景知识
A.2 若干术语和理论
A.3 构建一幅简单图形
A.4 打印输出
A.5 统计变换
A.6 主题
A.7 结语
前言/序言
《R语言数据可视化探索:从基础到精通》 内容简介 本书是一本面向R语言使用者,旨在全面系统地介绍数据可视化方法与实践的教程。本书内容聚焦于如何利用R语言强大的可视化能力,将枯燥的数据转化为直观、富有洞察力的图形,从而帮助读者更好地理解数据、发现模式、沟通信息。本书不包含任何与“R数据可视化手册”这本书本身相关的内容,我们将专注于R语言在数据可视化领域的实际应用和技术细节。 第一部分:数据可视化的基石——理解与准备 在深入数据可视化之前,建立坚实的理论基础和数据准备能力至关重要。本部分将引领读者进入数据可视化的世界,理解其核心概念、原则以及不同可视化类型的适用场景。 第一章:数据可视化的魅力与原则 1.1 数据可视化为何如此重要? 探索人类视觉处理信息的优势。 数据可视化在科学研究、商业决策、公众传播中的关键作用。 如何通过可视化快速识别趋势、异常和关联。 1.2 可视化设计的黄金法则 清晰性、准确性、效率原则的阐述。 避免误导性图形的常见陷阱(例如,不当的轴刻度、三维图形的滥用)。 乔斯·斯蒂格勒(Edward Tufte)等可视化先驱的贡献与思想。 数据墨水比(Data-Ink Ratio)的概念及其应用。 1.3 不同可视化类型的选择与应用 展示型可视化: 用于呈现已知信息,如报告、仪表盘。 条形图(Bar Chart)、折线图(Line Chart)、饼图(Pie Chart)的适用场景与局限性。 散点图(Scatter Plot)用于展示变量间关系。 柱状图(Histogram)用于展示数据分布。 探索型可视化: 用于发现未知模式、检验假设。 箱线图(Box Plot)用于比较多组数据的分布。 热力图(Heatmap)用于展示矩阵数据中的关联性。 树状图(Treemap)用于展示层级结构数据。 叙事型可视化: 用于讲述数据背后的故事,引导读者理解。 交互式可视化在叙事中的作用。 如何构建一个有吸引力的可视化故事线。 第二章:R语言数据处理与可视化准备 2.1 R语言环境搭建与基础操作 R和RStudio的安装与配置。 变量、数据类型、数据结构(向量、列表、矩阵、数据框)的介绍。 常用的R命令和函数。 2.2 数据导入与导出 使用`read.csv()`、`read.table()`导入CSV、TXT文件。 使用`readxl`包读取Excel文件。 使用`haven`包读取SPSS、SAS、Stata等统计软件数据。 使用`write.csv()`、`write.table()`导出数据。 2.3 数据清洗与预处理 处理缺失值(`is.na()`, `na.omit()`, `impute()`)。 处理异常值(识别与处理策略)。 数据转换:变量类型转换、数据重塑(`tidyr`包的`pivot_longer()`和`pivot_wider()`)。 数据筛选与排序(`dplyr`包的`filter()`和`arrange()`)。 创建新变量(`dplyr`包的`mutate()`)。 分组聚合(`dplyr`包的`group_by()`和`summarise()`)。 2.4 数据探索性分析(EDA) 描述性统计量计算(均值、中位数、标准差、分位数等)。 相关性分析(`cor()`函数)。 初步的数据概览与初步的可视化探索(例如,使用`summary()`)。 第二部分:使用ggplot2进行高效可视化 `ggplot2`是R语言中最流行、功能最强大的可视化包之一,它基于“图形语法”(Grammar of Graphics)理论,使得创建复杂、美观的图形变得简单而灵活。本部分将深入讲解`ggplot2`的核心概念和常用功能。 第三章:ggplot2核心概念与语法 3.1 图形语法(Grammar of Graphics) 理解图形的组成元素:数据(Data)、映射(Aesthetics)、几何对象(Geometries)、统计变换(Statistics)、标度(Scales)、坐标系(Coordinate System)、分面(Faceting)、主题(Theme)。 3.2 基础绘图流程 `ggplot()`函数的用法:指定数据集和映射。 `aes()`函数:将数据变量映射到视觉属性(x轴、y轴、颜色、大小、形状等)。 `geom_...()`函数:添加可视化图层(例如,`geom_point()`、`geom_line()`、`geom_bar()`)。 图层的叠加与组合。 3.3 映射(Aesthetics)详解 位置映射:x、y轴。 视觉属性映射:color、fill、size、shape、alpha(透明度)、linetype。 如何处理分类变量和连续变量的映射。 3.4 常用几何对象(Geoms) 点图(Points): `geom_point()`。 线图(Lines): `geom_line()`。 面积图(Area): `geom_area()`。 条形图(Bars): `geom_bar()`(统计条形图)与`geom_col()`(直接绘制条形图)。 直方图(Histograms): `geom_histogram()`。 密度图(Density Plots): `geom_density()`。 箱线图(Box Plots): `geom_boxplot()`。 小提琴图(Violin Plots): `geom_violin()`。 文本标签(Text Labels): `geom_text()`、`geom_label()`。 第四章:美化与定制你的ggplot2图形 4.1 标度(Scales)的调整 连续型标度:`scale_x_continuous()`, `scale_y_continuous()`,设置轴限制、刻度标签。 离散型标度:`scale_x_discrete()`, `scale_y_discrete()`。 颜色标度:`scale_color_manual()`, `scale_color_brewer()`, `scale_fill_gradient()`等。 大小、形状标度:`scale_size()`、`scale_shape()`。 4.2 坐标系(Coordinate Systems) 笛卡尔坐标系:`coord_cartesian()`,调整坐标轴范围。 对数坐标系:`coord_trans(y = "log10")`。 极坐标系:`coord_polar()`。 固定纵横比:`coord_fixed()`。 4.3 分面(Faceting)—— 多图并排展示 按行分面:`facet_grid(. ~ var)`。 按列分面:`facet_grid(var ~ .)`。 行和列均分面:`facet_grid(var1 ~ var2)`。 自由分面:`facet_wrap(~ var)`。 分面标签和间距的调整。 4.4 主题(Themes)与图表元素的定制 内置主题:`theme_bw()`, `theme_classic()`, `theme_minimal()`等。 自定义主题元素:`theme()`函数,调整背景、网格线、轴标签、标题字体等。 添加标题、副标题和图例:`labs()`函数。 4.5 交互式图表的初步探索 `plotly`包与`ggplot2`的结合,创建交互式图形。 鼠标悬停提示(tooltips)的设置。 缩放、平移等交互功能。 第三部分:进阶可视化技术与应用 本部分将介绍一些更高级的可视化技术,以及如何将R语言可视化应用于更复杂的场景,例如时间序列、地理空间数据和网络分析。 第五章:特定数据类型的可视化 5.1 时间序列数据可视化 使用`ts`对象和`zoo`、`xts`包。 绘制时间序列图,展示趋势、季节性、周期性。 自相关图(ACF)和偏自相关图(PACF):`acf()`, `pacf()`。 使用`ggplot2`绘制多变量时间序列。 5.2 地理空间数据可视化 `sf`包与`sf`对象。 读取地理空间数据(Shapefile, GeoJSON等)。 使用`ggplot2`进行地图绘制(`geom_sf()`)。 添加底图(`ggspatial`包,`ggmap`包)。 热力图与点密度图在地图上的应用。 5.3 网络数据可视化 `igraph`包与图结构。 图的表示:节点、边。 使用`ggraph`包进行网络图绘制。 不同的布局算法(力导向、圆形布局等)。 节点和边的属性可视化(颜色、大小、粗细)。 第六章:高级可视化图表类型 6.1 组合图与多变量可视化 平行坐标图(Parallel Coordinates Plot):展示高维数据。 雷达图(Radar Chart):比较多个指标。 散点图矩阵(Scatter Plot Matrix):一次性查看多个变量间的两两关系。 6.2 分布可视化进阶 联合分布图(Joint Distribution Plot):结合散点图和边际直方图/密度图。 二维核密度估计图。 6.3 复杂关系的可视化 桑基图(Sankey Diagram):展示流量或转化。 弦图(Chord Diagram):展示数据在不同类别间的联系。 第七章:数据可视化报告与仪表盘 7.1 使用R Markdown创建动态报告 R Markdown文档结构与语法。 嵌入R代码块,实现代码、结果和图表的自动化生成。 导出为HTML、PDF、Word文档。 7.2 使用Shiny构建交互式Web应用 Shiny应用程序的基本结构:UI(用户界面)和Server(服务器逻辑)。 创建交互式控件(滑块、下拉菜单、按钮)。 响应式绘图,根据用户输入动态更新图表。 部署Shiny应用。 7.3 最佳实践与排版 如何设计一个清晰、易于理解的仪表盘。 考虑受众,选择合适的图表和信息层级。 图表的标注、标题和注释。 第四部分:实践案例与技巧 本部分将通过实际案例,展示如何运用前面学到的知识解决真实世界的数据可视化问题,并分享一些提高可视化效率和质量的实用技巧。 第八章:精选案例分析 8.1 市场营销数据分析可视化 分析客户购买行为,识别客户群体。 可视化销售趋势和渠道表现。 8.2 生物医学研究数据可视化 基因表达数据的可视化。 患者生存率与治疗效果的比较。 8.3 经济与金融数据可视化 股票价格走势与技术指标分析。 宏观经济数据的趋势洞察。 第九章:R语言可视化技巧与进阶 9.1 性能优化技巧 处理大数据集的可视化策略。 避免重复计算,使用缓存。 9.2 导出高质量图形 使用`ggsave()`导出不同格式(PNG, JPEG, PDF, SVG)。 分辨率和尺寸的设置。 9.3 整合其他可视化库 `lattice`包与`base` R图形函数(简要介绍)。 与其他统计分析工具的联动。 9.4 常见问题解答与排错 解决图形渲染错误。 调整不理想的图表布局。 本书内容丰富,结构清晰,从基础概念到高级应用,层层递进,旨在帮助读者掌握R语言数据可视化的核心技能,并能自信地应用这些技能来解决实际问题,发现数据中的价值。通过大量的代码示例和实践指导,读者将能够逐步构建出专业、美观且富有洞察力的数据可视化作品。