新闻中心

R语言数据可视化实战 ――大数据专业图表从入门到精通(r语言画图数据可视化)

2023-11-24
浏览次数:
返回列表

​ 数据可视化,是关于数据视觉表现形式的科学技术研究,它旨在借助图形化手段,清晰有效地传达与沟通信息,是科学可视化与信息可视化的统一。当前,数据可视化在教学、科学研究等方面极为活跃,已成为人工智能和大数据分析的基础内容之一。R语言(简称R)是一款开源的数据分析和可视化软件,主要用于统计分析、图形绘制、数据挖掘、机器学习等,其在数据可视化方面具有诸多优势。Science、Nature和Cell等国际顶级期刊上的图表大都是使用R语言绘制的,它已经成为大数据分析和科学研究中绘制专业图表的必备工具。关于专门介绍R语言中的数据可视化功能,基于R语言进行数据可视化实战的书籍:R语言数据可视化实战 (微视频全解版) ――大数据专业图表从入门到精通 ——孙玉林,薛震 著 已经由电子工业出版社出版。书籍封面如下图所示:

下面将会简单的介绍该书中所包含的主要内容。

1: R基础可视化包graphics

安装好R后,会自动加载一个数据可视化包graphics,它含了R的基本绘图功能,可以绘制常用的直方图、线图、点图、饼图、密度曲线、三维透视图等。graphics包并不能将可视化做到尽可能的美观,而是在实用的基础上力求快速简单的得出所需要的图形,进而对数据进行直观、全面的理解。该包可获得的常用可视化图像如下图所示。

图1 graphics包的常用可视化图像

2: ggplot2包及其拓展包

在基于R语言的数据可视化方面,ggplot2包已经发展成为最受欢迎的R包,并且在ggplot2包的基础上,还衍生出了各种各样的R包用来丰富ggplot2的绘图功能,将这些包和ggplot2包结合使用,能够获得更加精美的图像。ggplot2包绘图的优点如下:(1)ggplot2包绘制的图形美观,而且绘图非常简便;(2)ggplot2包已经精心挑选了一系列的预设图形,所以能快速的绘制高质量的图形。(3)ggplot2包采用图层叠加的绘图方式,可以首先绘制原始数据,然后不断的添加图形的注释和统计的汇总结果。(4)ggplot2包的绘图能力不仅强大,而且还有很多包是在ggplot2的基础上,进行了进一步的开发,方便快速绘制更复杂的统计图像。在下面的图2中展示了一些ggplot2可视化得到的常用图像。

图2 ggplot2包的常用可视化图像

除此之外ggplot2包还有很多方便使用的拓展包,下面对一些经典的拓展包进行简单的介绍。

2.1 ggiraphExtra包

ggiraphExtra是绘制可交互ggplot2图像的一个包,它扩展了ggplot2和ggiraph两个包的数据可视化方式,增强了它们的可交互图像的能力。该包提供了直接可视化可交互箱线图、甜甜圈图等图像的函数。

2.2 GGally包

GGally包是通过添加几个函数来扩展ggplot2,将数据可视化变的更加简单,在数据转换方面更加简便。GGally包通常用于可视化矩阵散点图、平行坐标图、社交网络图等。在下面的图3中展示了GGally包将网络图与地图相结合的可视化图像

图3 GGally包将网络图与地图相结合的可视化图像图片

2.3 ggChernoff包

ggChernoff包为ggplot2引入了一个geom_chernoff()函数,该函数的功能和geom_point()很像,只是它绘制时利用一些表情符号(比如笑脸等)来代替点。

2.4 ggTimeSeries包

ggTimeSerise包提供了一些新颖的时间序列数据可视化功能,可以在ggplot2包的基础上绘制出更让人感兴趣的时间序列图像,例如日历图、蒸汽图等。下面的图4则是展示了ggTimeSerise包可视化得到的温度热力图。

图4 ggTimeSerise包可视化得到的温度热力图图片

2.5 treemapify和ggpol包

treemapify是一个基于ggplot2包对树图(Treemap,主要是矩形树图)进行可视化的包。ggpol是基于ggplot2包用于绘制议会图(结构像议会现场的扇环型座席分布)的可视化包,同时还添加了其他的可视化方法,如可视化混淆矩阵、突出显示区域的时间序列图等。

图5 treemapify包可视化得到的矩形树图图片

2.6 ggridges和gganimate包

ggridges是基于ggplot2包专门用于可视化脊线图的包。脊线图是部分重叠的线图,可产生山脉的形象,对可视化时间或空间分布的变化非常有效。gganimate是将ggplot2包的可视化图像转化成动画的包,动画图像不仅具有视觉上的冲击力,而且能够传递更多的信息,可以对数据进行宏观分析。

图6 ggridges包可视化得到的脊线图图片

2.7 ggfortify包

ggfortify是一个基于ggplot2的拓展包,它包含autoplot()函数,可以只用一行代码就可对主成分分析、聚类分析、回归分析、时间序列分析等方法的统计结果,以ggplot2的风格进行可视化,大大提高了数据分析的效率。

图7 ggfortify包可视化时间序列预测模型图片

3: 热力图数据可视化包

热力图是一个以颜色变化来显示数据的矩阵图形。R中有多个可视化数据热力图的包,其中pheatmap包用来可视化静态的热力图,d3heatmap包和heatmaply包可以可视化可交互的热力图。其中,使用pheatmap包可视化静态热力图时,可以通过相关的参数来确定是否对数据进行聚类,从而获得聚类热力图,还可以通过调整图形参数,呈现不同的可视化结果。图8展示了对一个数据获得聚类热力图的可视化结果。

图8 pheatmap包可视化得到的聚类热力图图片

4: 词云图数据可视化包

针对文本的出现次数的可视化分析,使用词云进行可视化是一个很好的选择,它能够充分吸引人们的注意力。在R中,有两个常用的可视化词云的包,分别是静态可视化词云包wordcloud和动态可视化词云包wordcloud2。图9展示了一幅wordcloud2包可视化得到的可交互的词云图。

图9 wordcloud2包可视化得到的可交互的词云图图片

5: 社交网络图数据可视化包

网络数据(或图数据)是一种重要的非结构化数据,不仅包含人与人之间的社交网络,还包含事物之间的各种联系,它们规模庞大、关系复杂、不易观察,网络数据的可视化成为数据挖掘的重要研究内容之一。igraph包是用来解决图与网络问题并对其进行可视化的包。visNetwork是一个专门用于可视化可交互网络图的R包,并且可以和igraph包获得的图数据相互调用。networkD3包可以轻松创建基于Htmlwidgets框架的网络图,它支持力导向图、桑基图、树形图等三种类型的网络图。threejs包使用three.js和R的htmlwidgets包提供了绘制交互式的3D散点图、3D网络图和地球仪图的功能,其中3D网络图可以在三维空间分析节点之间的联系。图10展示了一副使用igraph包获得的一副社交网络图。

图10 igraph包可视化得到的分割后的社交网络图图片

6: R语言的地图数据可视化包

地图信息数据可视化,常用于可视化与地理位置相关的数据。地图的引入,可以使读者在理解数据的大小、关系、变化趋势的同时,进一步分析数据在地理位置上的对应关系,从而传递更多有用的信息。R中绘制静态地图的常用R包有maps、ggmap、tmap包,其中tmap包还常用于制作地图动画,而leaflet、mapview等包常用于绘制可交互地图。

6.1 ggmap包

ggplot2包可以实现将地理信息数据进行可视化,而ggmap包是基于ggplot2可视化地图的拓展包,其绘图方法与ggplot2类似,两者相结合可以更方便的对地图数据进行可视化。图11展示了一副通过ggmap包可视化得到的地图散点热力图。

图11 ggmap包可视化得到的地图散点热力图图片

6.2 tmap包

tmap是R中较专业的地图数据可视化包,由Martijn Tennekes编写,主要用于绘制主题地图,与ggplot2包的“图形的分层语法”相同,可通过“+”来添加不同的图层。

6.3 leaflet包

leaflet是一个很受欢迎的用于可交互式地图的开源JavaScript包,使用该包绘制可交互地图具有很多优点,包括可以交互式平移、缩放地图;在地图上添加地图图块、标记、多边形、线、弹出窗口;将地图嵌入knitr、R Markdown文档或shiny应用程序中等。

图12leaflet包可视化气泡图图片

6.4 mapview包

mapview是在leaflet包的基础上进一步封装的包,它可以快速、方便地对空间数据进行可视化,并且可以使用更少的程序绘制可交互式地图。在mapview包中,使用一个mapview()函数即可完成可交互地图的可视化。

7: R语言制作交互式数据分析应用包Shiny和flexdashboard包

shiny是通过R直接构建交互式Web应用程序的软件包,由RStudio公司开发,它可以让用户与数据、分析进行交互操作,获取更加直观、丰富的信息。与shiny包类似,flexdashboard包支持以更简单、轻量级的方式构建数据可视化仪表盘,它通过R Markdown文件将数据进行可视化,并发布为网页形式的可视化仪表盘。flexdashboard包支持网页小部件、基本的网格图形、表格数据和文字注释等多种组件,还具有调用shiny中的小部件的功能。图13展示了一个通过R语言构建的交互式数据分析应用,可以通过点击相关的按钮,实时的更新想要的数据可视化分析内容。

图13 交互式数据分析应用图片

8: R语言交互式数据数据可视化plotly

plotly包是功能齐全的可交互数据可视化包,不但提供了多种编程语言接口来方便数据可视化,而且plotly包与R语言的结合较好。其还提供了将ggplot2包输出图像转化为可交互图像的方法。而且针对可交互的3D可视化图像,plotly包的可交互效果和渲染效果较好,且可以绘制各种各样的3D图像,如散点图、气泡图、曲面图等。下面的图14中,则是展示了使用plotly包在3D空间绘制多元回归模型的回归曲面。

图14plotly包绘制多元回归模型的回归曲面图片

除了Plotly包针对3D数据可视化,还介绍了scatterplot3d包可视化3D散点图、 plot3d包可视化3D图、rayshader包将ggplot2的可视化图像3D化等内容。

9:书籍购买方式

在书籍《R语言数据可视化实战 (微视频全解版) ——大数据图表从入门到精通》中,还有更多的R语言数据可视化分析使用案例,可学习更多的关于R语言数据可视化的内容。

该书籍已经出版,各大网店均有销售,点击下面的链接即可购买。

R语言数据可视化实战 (微视频全解版) ――大数据专业京东¥65.86去购买R语言数据可视化实战 (微视频全解版) ――大数据专业天猫¥61.80去购买

10:书籍目录

第1 章 数据可视化与R 语言 ………………………………………………………… 001 1.1 数据可视化的发展 ……………………………………………………………………002 1.2 数据可视化的作用 ……………………………………………………………………004 1.3 R 语言数据可视化的优势 ……………………………………………………………008 1.4 R 语言数据可视化的方法 ……………………………………………………………008 1.5 本章小结 ………………………………………………………………………………011 第2 章 R 语言可视化快速入门 ……………………………………………………… 012 2.1 R 语言的数据结构 ……………………………………………………………………013 2.1.1 向量和矩阵 ……………………………………………………………………013 2.1.2 高维数组 ………………………………………………………………………016 2.1.3 数据框和列表 …………………………………………………………………017 2.2 控制语句和函数 ………………………………………………………………………020 2.2.1 条件语句 ………………………………………………………………………020 2.2.2 循环语句和函数 ………………………………………………………………021 2.3 数据操作 ………………………………………………………………………………023 2.3.1 dplyr 包数据分类汇总 …………………………………………………………023 2.3.2 长宽数据转换 …………………………………………………………………024 2.4 R 语言可视化包graphics ………………………………………………………………026 2.4.1 graphics 包的参数设置 …………………………………………………………026 2.4.2 使用graphics 包绘制子图 ……………………………………………………031 2.5 本章小结 ………………………………………………………………………………033 第3 章 ggplot2 包数据可视化 ……………………………………………………… 035 3.1 ggplot2 包初探 …………………………………………………………………………036 3.1.1 用ggplot2 包数据可视化的绘图流程 …………………………………………036 3.1.2 ggplot2 包的基础主题的显示 …………………………………………………038 3.2 ggplot2 包可视化的常用统计图 ………………………………………………………040 3.2.1 ggplot2 包的几何对象 …………………………………………………………040 3.2.2 ggplot2 包的theme() 函数 ……………………………………………………044 3.2.3 ggplot2 包的统计变换和位置调整 ……………………………………………048 3.3 ggplot2 包绘制分组图形 ………………………………………………………………051 3.3.1 ggplot2 包的坐标系变换和分面 ………………………………………………051 3.3.2 ggplot2 包的颜色设置 …………………………………………………………055 3.4 可交互的ggplot2 图形 …………………………………………………………………057 3.4.1 plotly 包的可交互图形 …………………………………………………………058 3.4.2 ggiraphExtra 包的可交互图形 …………………………………………………061 3.5 ggplot2 包可视化案例 …………………………………………………………………067 3.6 本章小结 ………………………………………………………………………………072 第4 章 ggplot2 拓展包可视化 ……………………………………………………… 073 4.1 用GGally 包数据可视化 ………………………………………………………………074 4.1.1 GGally 包功能简介 ……………………………………………………………074 4.1.2 GGally 包可视化案例 …………………………………………………………074 4.2 ggChernoff 包数据可视化 ……………………………………………………………082 4.2.1 ggChernoff 包功能简介 …………………………………………………………083 4.2.2 ggChernoff 包可视化案例 ………………………………………………………083 4.3 ggTimeSeries 包可视化时序数据 ……………………………………………………086 4.3.1 ggTimeSeries 包功能简介 ………………………………………………………087 4.3.2 ggTimeSeries 包可视化案例 ……………………………………………………087 4.4 treemapify 和ggpol 包数据可视化 ……………………………………………………090 4.4.1 用treemapify 包可视化树图 …………………………………………………091 4.4.2 用ggpol 包数据可视化 …………………………………………………………093 4.5 eggridges 和gganimate 包数据可视化 ………………………………………………097 4.5.1 用ggridges 包数据可视化 ……………………………………………………097 4.5.2 用gganimate 包可视化动画 ……………………………………………………100 4.6 ggfortify 包数据可视化 ………………………………………………………………102 4.6.1 用ggfortify 包可视化多元统计分析 …………………………………………102 4.6.2 用ggfortify 包可视化时间序列分析 …………………………………………106 4.7 本章小结 ………………………………………………………………………………109 第5 章 数据3D 图形可视化 ……………………………………………………………110 5.1 静态3D 图形可视化 ……………………………………………………………………111 5.1.1 用scatterplot3d 包可视化3D 散点图 …………………………………………111 5.1.2 用plot3D 包可视化3D 图形 …………………………………………………113 5.2 可交互3D 图形的可视化 ………………………………………………………………118 5.2.1 用plotly 包可视化可交互3D 图形 ……………………………………………118 5.2.2 用plotly 包3D 可视化回归结果 ………………………………………………125 5.3 rayshader 包可视化3D 图形 …………………………………………………………129 5.3.1 用rayshader 包绘制3D 地形图 ………………………………………………129 5.3.2 rayshader 包3D 可视化ggplot2 图形 …………………………………………130 5.4 其他3D 图形可视化包 …………………………………………………………………136 5.4.1 plotrix 包可视化3D 饼图 ………………………………………………………136 5.4.2 latticeExtra 包绘制3D 条形图 …………………………………………………137 5.4.3 rgl 包制作3D 动画 ……………………………………………………………138 5.5 本章小结 ………………………………………………………………………………140 第6 章 shiny 数据可视化应用与仪表盘 ………………………………………………141 6.1 shiny 应用的文件结构和使用方法 ……………………………………………………142 6.1.1 shiny 应用的文件结构 …………………………………………………………142 6.1.2 shiny 应用的使用方法 …………………………………………………………143 6.2 shiny 包的常见功能 ……………………………………………………………………146 6.2.1 UI 布局的常用函数 ……………………………………………………………146 6.2.2 shiny 包的小部件 ………………………………………………………………147 6.2.3 Server 脚本的常用函数 ………………………………………………………150 6.3 用flexdashboard 包制作可视化仪表盘 ………………………………………………154 6.3.1 可视化仪表盘的初始化 ………………………………………………………154 6.3.2 可视化仪表盘的布局 …………………………………………………………156 6.3.3 用highcharter 包可视化可交互图形 …………………………………………162 6.3.4 可视化仪表盘案例 ……………………………………………………………167 6.4 本章小结 ………………………………………………………………………………172 第7 章 数据清洗、探索与可视化 …………………………………………………… 173 7.1 数据缺失值可视化 ……………………………………………………………………174 7.1.1 用VIM 包可视化数据的缺失值 ………………………………………………174 7.1.2 用naniar 包可视化数据的缺失值 ……………………………………………180 7.2 不同类型变量之间关系的可视化 ……………………………………………………184 7.2.1 连续变量之间关系的可视化 …………………………………………………184 7.2.2 分类变量之间关系的可视化 …………………………………………………185 7.2.3 分类变量与连续变量之间关系的可视化 ……………………………………190 7.3 多个变量之间关系的可视化 …………………………………………………………193 7.3.1 变量相关系数的可视化 ………………………………………………………193 7.3.2 多元统计分析的可视化 ………………………………………………………196 7.4 矩阵热力图可视化 ……………………………………………………………………200 7.4.1 可视化静态热力图 ……………………………………………………………200 7.4.2 可视化可交互热力图 …………………………………………………………204 7.5 shiny 数据探索可视化应用 ……………………………………………………………205 7.6 本章小结 ………………………………………………………………………………215 第8 章 地图信息数据可视化 ………………………………………………………… 216 8.1 可视化静态地图 ………………………………………………………………………217 8.1.1 用maps 包可视化地图 …………………………………………………………217 8.1.2 用ggmap 包可视化地图 ………………………………………………………221 8.2 tmap 包可视化地图 ……………………………………………………………………224 8.2.1 用tmap 包可视化静态地图 ……………………………………………………226 8.2.2 用tmap 包可视化可交互地图 …………………………………………………229 8.2.3 用tmap 包制作地图动画 ………………………………………………………229 8.3 用leaflet 包地图数据可视化 …………………………………………………………232 8.3.1 绘制不同类型的地图 …………………………………………………………233 8.3.2 在地图上添加内容 ……………………………………………………………234 8.3.3 图例和颜色映射 ………………………………………………………………237 8.3.4 用leaflet 包可视化案例 ………………………………………………………239 8.4 用mapview 包可视化可交互地图 ……………………………………………………243 8.4.1 用mapview() 函数可视化地图 ………………………………………………243 8.4.2 设置鼠标单击后显示的内容 …………………………………………………245 8.5 shiny 地图可视化应用 …………………………………………………………………247 8.6 本章小结 ………………………………………………………………………………254 第9 章 文本数据分析与可视化 ……………………………………………………… 256 9.1 文本数据预处理 ………………………………………………………………………257 9.1.1 英文文本数据预处理 …………………………………………………………257 9.1.2 中文文本数据预处理 …………………………………………………………259 9.2 词频提取与可视化 ……………………………………………………………………262 9.2.1 条形图和热力图可视化 ………………………………………………………262 9.2.2 词云可视化 ……………………………………………………………………266 9.2.3 蒸汽图和圆堆积图可视化 ……………………………………………………272 9.3 文本聚类与可视化 ……………………………………………………………………276 9.3.1 LDA 主题模型可视化 …………………………………………………………276 9.3.2 K 均值聚类和系统聚类可视化 …………………………………………… 280 9.3.3 文本探索性聚类可视化 ………………………………………………………284 9.4 词向量的计算与可视化 ………………………………………………………………286 9.4.1 词向量的计算 …………………………………………………………………286 9.4.2 词向量可视化 …………………………………………………………………287 9.5 本章小结 ………………………………………………………………………………289 第10 章 网络数据分析与可视化 ……………………………………………………… 291 10.1 用igraph 包可视化网络数据 …………………………………………………………292 10.1.1 igraph 包的数据形式 …………………………………………………………292 10.1.2 igraph 包的参数和图层 ………………………………………………………299 10.1.3 网络图的统计特性 ……………………………………………………………304 10.1.4 igraph 包可视化复杂网络图 …………………………………………………308 10.1.5 igraph 包的网络分割图 ………………………………………………………314 10.1.6 igraph 包可视化可交互网络图 ………………………………………………316 10.2 visNetwork 包可视化可交互网络图 …………………………………………………317 10.2.1 可视化igraph 包的网络数据 …………………………………………………317 10.2.2 可视化数据表的网络数据 ……………………………………………………319 10.2.3 设置网络图的可交互功能 ……………………………………………………321 10.2.4 设置网络图的布局方式 ………………………………………………………325 10.2.5 可视化分组的可交互网络图 …………………………………………………327 10.3 其他可交互网络图可视化包 …………………………………………………………328 10.3.1 networkD3 包可视化可交互网络图 …………………………………………328 10.3.2 threejs 包可视化可交互3D 网络图 …………………………………………331 10.4 本章小结 ………………………………………………………………………………334 参考文献

11:书籍提供的辅助资源

本书选用的案例具有代表性、实用性,每章节均配有大量的实例代码和详细的注释,使用的数据和源码均有提供,并且针对每个小节配有微视频来讲解具体的操作过程和程序的功能,非常便于读者自己动手练习。

欢迎关注我们的WX公众号:Adam大数据分析小站

文章首发于:R语言常用的数据可视化包总结

12:书籍QQ交流群(689669836)

欢迎大家的加入相互交流学习。

搜索