作者:Asha Hill

翻译:张玲

校对:梁傅淇

本文约2900字建议阅读10分钟。

本文将为大家简要介绍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就可以完成其余的操作。

创建者:David Gohel

了解更多:ggiraph

原文标题:

12 Extensions to ggplot2 for More Powerful R Visualizations

原文链接:

https://blog.modeanalytics.com/r-ggplot-extension-packages/

译者简介

张玲,在岗数据分析师,计算机硕士毕业。从事数据工作,需要重塑自我的勇气,也需要终生学习的毅力。但我依旧热爱它的严谨,痴迷它的艺术。数据海洋一望无境,数据工作充满挑战。感谢数据派THU提供如此专业的平台,希望在这里能和最专业的你们共同进步!

翻译组招募信息

工作内容:将选取好的外文前沿文章准确地翻译成流畅的中文。如果你是数据科学/统计学/计算机专业的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友,数据派翻译组欢迎你们加入!

你能得到:提高对于数据科学前沿的认知,提高对外文新闻来源渠道的认知,海外的朋友可以和国内技术应用发展保持联系,数据派团队产学研的背景为志愿者带来好的发展机遇。

其他福利:和来自于名企的数据科学工作者,北大清华以及海外等名校学生共同合作、交流。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派THU ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

点击“阅读原文”拥抱组织

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

  1. R可视化包ggplot2设置透明背景实战

    R可视化包ggplot2设置透明背景实战 目录 R可视化包ggplot2设置透明背景实战 #ggplot2设置透明背景语法 #ggplot2绘图

  2. B站收藏 12.5w+!GitHub 标星 6.6k+!这门神课拯救了我薄弱的计算机基础

    大家新年好呀,我是你们的 猫哥,我又回来啦 ~ 相信大家过年都过得开心吧 过得开心,那么就开始学习了哈 ~ 前言 作为一个所谓的计算机科班出身的人来说,特别难为情的是自己的计算机基础很差,相信这不是少 ...

  3. Python 和 C/C++ 拓展程序的性能优化

    背景 在 MegEngine imperative runtime 的早期开发中,我们面临着一些的性能优化问题.除了一些已知需要重构的地方(早期设计时为了开发效率而牺牲性能的妥协),还存在一些未知的性 ...

  4. 12 本最具影响力的程序员书籍

    12 本最具影响力的程序员书籍 很多人问我这个问题,尤其是那些刚开启软件工程生涯的同事和朋友. 要成为一个更好的开发人员,我应该读哪些书?我真的需要读书吗? 这是一个很值得探讨的问题,而且也是我在成为 ...

  5. 12.通过微信小程序端访问企查查(采集工商信息)

    12.通过微信小程序端访问企查查(采集工商信息) 需要注意的问题: 一.1.微信端访问企查查小程序需要登录.2.访问抓包获取的url是有时效性的过一段时间就不能用了. http://xcx.qicha ...

  6. c语言编程软件12个球,计算机二级考试C语言辅导:12个球的程序

    有12个外表一模一样的小球,其中有一个的质量和其他11个球不一样(11个球的质量完全相同),而且该球不知道是轻点还是重点.现在给你一个天平(无砝码),只有3次测量机会,请你找出该球.球号从a到l(小写 ...

  7. Chrome 插件:自己写的插件提示请停用以开发者模式运行的插件处理方法,该拓展程序未列在chrome网上应用商店中,并可能是在您不知情的情况下添加的解决办法

    Chrome 浏览器插件问题处理 第一章:问题描述 ① 问题一:请停用以开发者模式运行的插件 ② 问题二:该拓展程序未列在 chrome 网上应用商店中,并可能是在您不知情的情况下添加的 第二章:Ch ...

  8. 用C语言写一个球的程序,12个球的程序.....

    12个球的程序..... 微软的一道题目...上班很无聊 写来玩玩 有12个外表一模一样的小球,其中有一个的质量和其他11个球不一样(11个球的质量完全相同),而且该球不知道是轻点还是重点.现在给你一 ...

  9. Java黑皮书课后题第3章:**3.4(随机月份)编写一个随机产生1和12之间整数的程序,并根据数组1,2,3...显示对应的月份

    **3.4(随机月份)编写一个随机产生1和12之间整数的程序,并根据数组1,2,3...显示对应的月份 题目 题目描述 破题 代码 如何理解产生随机数 题目 题目描述 **3.4(随机月份)编写一个随 ...

最新文章

  1. 【Xamarin】揭秘生成配置
  2. 【GDKOI2003】最大公共子串
  3. vsc提示只有一行_Solution:连续调用BAPI出错,以及BAPI提示成功但数据库没有数据...
  4. leetcode No.123 买卖股票的最佳时机 III
  5. 大话企业级android读书笔记(一)
  6. Tomcat的结构概述
  7. tensorflow sigmoid 如何计算训练数据的正确率_“来自蒙娜丽莎的凝视”— 结合 TensorFlow.js 和深度学习实现...
  8. NAT穿透解决方案介绍
  9. Linux/Unix 多线程通信
  10. Windows server 2012体验之活动目录回收站
  11. erlang 分布式数据库Mnesia 实现及应用
  12. URlRewriter组件下载及使用说明
  13. CentOS6.9安装AliSQL
  14. EXCEL 求解线性规划问题
  15. 统计学习方法概论之思维导图图解
  16. 网格边缘试探--服务网格的探索与实践
  17. 秋从饶合似陶家,遍绕篱边日渐斜。不是花中偏爱菊,此花开尽更无花
  18. 201771010101 白玛次仁 《2018面向对象程序设计(Java)》第十七周学习总结
  19. 123456G随想~
  20. Android 11 Bata 正式发布!闲鱼最新升级版 Flutter 技术电子书开放下载

热门文章

  1. linux后台任务部署平台Tac
  2. 【物联网智能网关-14】Html5:Canvas+WebSocket实现远程实时通信(下)
  3. 【翻译转载】【官方教程】Asp.Net MVC4入门指南(2):添加一个控制器
  4. 解决eclipse中egit中的cannot open git-upload-pack问题
  5. 【Xamarin挖墙脚系列:现有IPhone/IPad 设备尺寸】
  6. CSS Float(浮动)
  7. xml方式整合SpringMVC 4整合 Hibernate4
  8. 【实习记】2014-08-20实习的mini项目总结
  9. PHP 神盾解密工具
  10. C#读取数据库返回泛型集合 把DataSet类型转换为ListT泛型集合