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

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

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

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

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

1. gganimate

7333a1e0d98227b09d2bbfc6f7b600e3fe511fd3

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

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

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

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

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

创建者:David Robinson

了解更多:gganimate

2. gganimate

485f19de388b46f893af871b5a5e71309f04a335

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

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

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

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

了解更多:ggdendro

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

3. gganimate

5529dd22c896d85b40367ed76c0b6b5a7b342909

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

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

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

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

学到更多:ggthemes

4. gganimate

f8a0bb691a62410fab35b917db28eb8730b669d5

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

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

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

创建者:Alboukadel Kassambara

了解更多:ggpubr

5. gganimate

6cb966a57a83b037cc71713de997f38c9c4d33fb

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

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

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

创建者:Thomas Pedersen

了解更多:patchwork

6. gganimate

6ca169fa8c154f4ce23743e21617eb2124d6ef9e

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

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

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

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

了解更多:ggridges

7. gganimate

a635840f939d5f920fc80cd81031801d41714266

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

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

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

创建者:David Kahle

学到更多:ggmap

8. gganimate

03a0e4273fe5e3268028f9653fa033a002b5d18b

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

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

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

创建者:Kamil Slowikowski

了解更多:ggrepel

9. gganimate

9e4f1830629eaa5db49ffb8a8bf5614c1d4fb20e

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

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

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

了解更多:ggcorrplot

10. gganimate

7e42bd9faf2e9bf5b7337d1116bef8c538549a70

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

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

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

创建者:Ricardo Bion

学到更多:ggradar

11. gganimate

9e4f1830629eaa5db49ffb8a8bf5614c1d4fb20e

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

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

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

了解更多:ggally

12. gganimate

b5ef7cd0d8bc2d3d432801d933c7cc37ecb5aafb

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

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

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


原文发布时间为:2018-08-19

本文作者:Asha Hill

本文来自云栖社区合作伙伴“数据分析”,了解相关信息可以关注“数据分析”。

相关文章
|
8月前
|
数据采集 SQL 数据可视化
大数据可视化技巧:借助PowerBI提升数据故事讲述力
【4月更文挑战第8天】Power BI助力大数据可视化,支持多种数据源连接,如SQL Server、Excel,提供数据清洗与转换功能。通过选择合适图表类型、运用颜色和大小强化表达,创建交互式仪表板。讲述数据故事时,注重故事主线设计,利用叙事技巧引导观众,并添加文本说明。分享已完成报告,提升数据驱动决策能力。动手实践,体验Power BI的强大与易用。
215 0
|
4月前
|
传感器 人工智能 数据挖掘
构建全息交互式开发环境:技术设想与未来展望
全息交互式开发环境结合全息投影与交互技术,为开发者打造三维编程空间,提升效率与创新。其核心特点包括三维代码视图、自然用户交互及实时协作。通过全息显示、高精度输入设备、空间计算与AI辅助,实现沉浸式体验。应用场景涵盖教育、复杂系统开发及远程协作,预示着软件开发新时代的到来。
|
5月前
|
人工智能 数据可视化 前端开发
前端可视化的发展趋势是什么?
【8月更文挑战第4天】前端可视化的发展趋势是什么?
96 5
|
5月前
|
开发者 图形学 iOS开发
掌握Unity的跨平台部署与发布秘籍,让你的游戏作品在多个平台上大放异彩——从基础设置到高级优化,深入解析一站式游戏开发解决方案的每一个细节,带你领略高效发布流程的魅力所在
【8月更文挑战第31天】跨平台游戏开发是当今游戏产业的热点,尤其在移动设备普及的背景下更为重要。作为领先的游戏开发引擎,Unity以其卓越的跨平台支持能力脱颖而出,能够将游戏轻松部署至iOS、Android、PC、Mac、Web及游戏主机等多个平台。本文通过杂文形式探讨Unity在各平台的部署与发布策略,并提供具体实例,涵盖项目设置、性能优化、打包流程及发布前准备等关键环节,助力开发者充分利用Unity的强大功能,实现多平台游戏开发。
142 0
|
7月前
|
数据可视化 数据挖掘 知识图谱
精选:15款顶尖Python知识图谱(关系网络)绘制工具,数据分析的强力助手
这里有15款免费工具推荐:NetworkX(Python基础),Graph-tool(C++速度),Graphviz(可视化库),ipycytoscape(Jupyter集成),ipydagred3,ipySigma(NetworkX + Web),Netwulf(交互式),nxviz(Matplotlib绑定),Py3plex(复杂网络分析),Py4cytoscape(Python+Cytoscape),pydot(Graphviz接口),PyGraphistry(GPU加速),python-igraph,pyvis(交互式图形),SNAP(大规模网络分析)。绘制和理解网络图从未如此简单!
455 0
|
7月前
|
SQL 供应链 数据可视化
python可视化练习:一家运动服装品牌销售数据的可视化改进案例研究
python可视化练习:一家运动服装品牌销售数据的可视化改进案例研究
|
8月前
|
存储 机器学习/深度学习 数据可视化
浅谈数字化和可视化的区别、各自的优缺点及未来的趋势主流
浅谈数字化和可视化的区别、各自的优缺点及未来的趋势主流
751 2
|
8月前
|
数据可视化 BI 定位技术
数据可视化系列-02各类图表的综合使用介绍及实践-下篇
数据可视化系列-02各类图表的综合使用介绍及实践-下篇
|
数据采集 存储 关系型数据库
Python爬虫技术的应用案例:聚焦热点话题与趋势分析
Python爬虫技术的应用案例:聚焦热点话题与趋势分析
|
监控 数据可视化
漏刻有时LOCKDATA数据可视化核心框架常见问题集锦
漏刻有时LOCKDATA数据可视化核心框架常见问题集锦
80 0