Asha Hill 作者梁傅淇校对张玲 翻译

12个ggplot2拓展程序助你强化R可视化

自2007年推出以来,ggplot2已经成为世界上下载最频繁、应用最广泛的R包之一。包括它的创造者Hadley Wickham在内,许多人将这一成就归功于ggplot2背后的理念。这个包的灵感来自Leland Wilkinson关于数据可视化的开创性文章《图形语法》(The Grammar of Graphics),这篇文章将图形分解成刻度和层次等语义组件,并将数据从表示中分离出来。

如果你是世界上众多ggplot2爱好者之一,你可能有时会发现自己正在寻找出色的软件包来拓展其功能。幸运的是,在过去的10年里,R社区一直致力于构建ggplot2的拓展包。今天我们推荐了12个我们最喜欢的ggplot2拓展程序,以帮助你为你的ggplot2赋予更多的能量,增加更多的光彩——或者只是为了更方便地创建图表。

请继续阅读我们的文章。我们的文章包括大量的R Notebook,能够让你从浏览器里充分了解这些包。

1. gganimate

动态演示人均GDP随时间的变化

数据源自从GAPMPEDER数据(David Robinson)

喜欢你的gglot 可视化,但希望它有更多的运动部件?gganimate可以帮助你解决这个问题。像ggplot2处理x,y,颜色等一样,这个包将“帧”(即动画中的时间点)作为一个美学单元处理,从而使得ggplot2的可视化“活”起来。结果是一个从相同图的不同帧中构建出来的动画。

正如你在上面的例子中所看到的,gganimate画出的图的坐标轴范围和图例不变,只有点在移动,这样观察者的注意力可以集中在数据如何随时间变化上。这也意味着,和动画扩展包(你创建多个图,并将它们组合起来)不同的是,gganimate只需要构建图一次,包括坐标轴和图例。

gganimate还允许你将动画保存成文件,如GIF,视频或动态网页,以便在RStudio和NoteBook之外使用。

创建者:David Robinson

了解更多:gganimate

2. gganimate

美国各州逮捕的聚类分析(Andrie de Vries)

如果你想控制聚类分析的外观和展示,那就从ggdendro开始吧!虽然R确实有聚类功能,但它只允许你直接绘制树形图,并不能分离出或显露基础数据。ggplot2的理念是致力于将数据从表示中分离出来,以便更好地控制数据的显示方式。

ggdendro提供了一个解决方案。它有几个提取树形图数据的有用函数,所以你可以保存或者操作数据本身。旋转树形图,移除网格背景(如上例所示),反转刻度,绘制三角形线段,创建DIANA和AGNES聚类图,等等。将它和dendextend 、ape两个包结合起来,就可以完全地控制你的树形图。

创建者:Andrie de Vries,可以在Mode上找到。

了解更多:ggdendro

可以在Mode上(https://modeanalytics.com/signin)试试ggdendro。

3. gganimate 

Motor Trend汽车数据集,“Highcharts”主题(Asha Hill)

如果你想让你的分析看上去可信,请看看ggthemes。这个多功能的库包含的主题和刻度让你可以直接复制数据可视化巨头的报告的外观。这些巨头包括爱德华·塔夫特(Edward Tufte)、Fivethirtyeight、经济学家、华尔街日报、Highcharts JS等。

甚至还包含了一些讽刺性的内容,例如Excel 2013主题,可以让你复制“经典丑陋的外观和感觉”(附注:“请永远都不要使用”)。

创建者:Jeffrey B. Arnold,可以在Mode上找到。

学到更多:ggthemes

4. gganimate 

具有比较p值的箱线图(Alboukadel Kassambara)

ggplot2是灵活而强大的,但是对于那些没有强大的R技能的人来说并非总是那么友好。由于许多研究出版物需要R图表,平常不使用R的研究人员经常需要根据需求生成高度定制的R图表。这就是ggpubr存在的原因:使用ggpot2(即使你还不知道如何使用ggplot2)可以很容易地生成为出版物定制的图表。

ggpubr 实际上是一个包装器,它可以使用更直观的语法帮助刚入门R的人生成复杂的图。该包允许你向图表添加p值和显著性水平,并在同一页中排列或注释多个图。它还可以轻松更改颜色和标签等格式元素。

创建者:Alboukadel Kassambara

了解更多:ggpubr

5. gganimate 

Motor Trend汽车数据的网格拼图(Thomas Pedersen)

如何在同一个NoteBook中排列多个R图?为了处理多变量数据,你可以使用Lattice等包。但是当你需要处理一些有关联的图时,patchwork是个更好的选择。

这个名称恰到好处的包提供了容易使用的数学运算符,用于在单个空间中组合和排列多个图。为了将图放在其他图的旁边,只需要使用+运算符即可。为了将图放在其他图的顶部,只需要将/用于垂直布局上。所有patchwork的运算符都可以组合成一个高度可读的布局语法。

创建者:Thomas Pedersen

了解更多:patchwork

6. gganimate 

鸢尾花数据集的山脊线图,颜色显示尾部分布概率(Claus O. Wilke)

山脊线图是部分重叠的线图,它的名字源于它与山脉存在相似之处。(Heyo Joy Division.)它们特别适用于可视化分布随时间、空间或其他连续变量的变化。

由于山脊线图相对较新,ggplot2没有创建它们的原始方式。ggridges 是为了填补这一空缺而创建的。该库提供计算和绘制密度估计、沿x轴改变填充颜色以及计算和可视化不同分布统计数据(如添加分位数信息)的方法。你还可以绘制原始数据点,有“雨云”到“地毯式”多种选择可供生成分布。

创建者:Claus O.Wilke,可以在Mode上找到。

了解更多:ggridges

7. gganimate 

ggmap做出的休斯敦犯罪密度图(David Kahle)

ggmap是一个功能强大的包,用于可视化空间数据和模型。他将数据置于从主流在线地图(如谷歌地图、OpenStreetMap和Stamen Maps)导出的静态地图之上。

ggmap 的优点在于,它使得ggplot2上的geoms可用于地图可视化。这意味着你可以在地图上创建等高线图或散点图,或者在多个地图上创建分层数据。你可以在许多不同风格的谷歌地图或者Stamen 地图上创建ggplot可视化图,从卫星图和路线图都可以——为你处理空间数据提供了最大的灵活性。

创建者:David Kahle

学到更多:ggmap

8. gganimate 

比较geom_text()和geom_text_repel()处理后的标签(Kamil Slowikowski)

ggrepel只有一个非常有用的目的:让ggplot2用户更好地控制图表中文本标签的位置。正如每个R编程人员所知道的那样,ggplot2处理文本标签的默认方式有时不太理想。(看看上面左边的图表)

ggrepel通过为ggplot提供文本和标签的位置信息来解决这个问题,这将有助于避免各种难看的标签。你可以将便签设置为简单地与其他标签、数据点或者图的边界隔离开。或者,你可以选择性地隐藏标签,将它们限定在图的某一区域中,或者调整它们以和边界对齐。愿(隔离的)力量与你同在。

创建者:Kamil Slowikowski

了解更多:ggrepel

9. gganimate 

Motor Trend汽车数据集的圆形相关矩阵(Alboukadel Kassambara)

对于想要绘制相关矩阵的ggplot爱好者,ggcorrplot提供了一组优雅的选项。ggcorrplot的灵感来自corrplot包,但是被构建为需要和ggplot一起使用。这意味着,它有很多出色的功能让你控制矩阵的外观,从改变盒子的颜色、形状或大小(如上面的圆点矩阵)到添加系数标签,根据层次聚类重新排序矩阵等。

创建者:Alboukadel Kassambara,可以在Mode上找到。

了解更多:ggcorrplot

10. gganimate 

Motor Trend汽车数据集的雷达图(Ricardo Bion)

雷达图提供了一种可视化多变量数据、发现模式的有用方法,以便于比较。ggradar旨在让你使用图形语法来创建这些图表,也被称作“蜘蛛网图”或“起始图”。

这个软件包基于Paul Williamson的代码,巧妙解决了这类图的特殊绘制问题:将环形网格线还有点、雷达坐标之间的直线结合起来。这应该是你雷达上的一个包。(抱歉,我不后悔。)

创建者:Ricardo Bion

学到更多:ggradar

11. gganimate 

美国航班模式,使用ggally将网络置于地图上(Amos Elberg)

ggally是ggplot的一个扩展程序,它汇集了一系列有用的额外的可视化功能。你可以使用ggally快速地在地图上画出模型的系数或者网络,如上面的可视化图所示。或许你需要重新排列你的数据来构建字形图?你也可以用它。

创建者:Barret Schloerke,可以在Mode上找到。

了解更多:ggally

12. gganimate 

使用ggiraph和patchwork绘制Motor Trend汽车数据集具有悬停效果的交互图(David Gohel)

如果你想要为你的ggplot增加高级的交互或动画,ggiraph就是你的伙伴。使用这个html部件,你可以扩展现有的ggplot2 条形图,散点图,箱型图,地图等等,以及执行诸如在悬停时显示你选择的提示,例如数据值和标签,或者增加悬停动画,如上面的图表所示。

当用户点击你图表中的某一元素时,你也可以利用ggiraph来执行特定的操作,比如打开一个新页面。只需要为动作指定一个JavaScript函数,ggiraph就可以完成其余的操作。

THU数据派
THU数据派

THU数据派"基于清华,放眼世界",以扎实的理工功底闯荡“数据江湖”。发布全球大数据资讯,定期组织线下活动,分享前沿产业动态。了解清华大数据,敬请关注姐妹号“数据派THU”。

入门ggplot2
2
相关数据
聚类分析技术

聚类分析(CA)是一种典型的无监督学习方法,这种方法是根据对象的特点将它们分成不同的组。K-均值是应用最广泛的聚类方法,其它方法还包括 k-Medoids、分层聚类和 DBSCAN。期望最大化法(EM)也是聚类分析的一种解决方案。聚类分析在数据挖掘、市场调研、异常值检测等许多领域都有应用。另外,降维技术也是一类类似于聚类分析的无监督学习方法,其典型的代表有主成分分析(PCA)、线性判别分析和 Isomap。

层次聚类技术

层次聚类通过对数据集在不同层次进行划分,从而形成树形的聚类结构。数据集的划分可采用“自底向上”的聚合(agglomerative)策略,也可采用“自顶向下”的分拆(divisive)策略。“自底而上”的算法开始时把每一个原始数据看作一个单一的聚类簇,然后不断聚合小的聚类簇成为大的聚类。“自顶向下”的算法开始把所有数据看作一个聚类,通过不断分割大的聚类直到每一个单一的数据都被划分。

暂无评论
暂无评论~