独家 | 6步教你用R语言制作动图

原文标题:How to create animated GIF images for data visualization using gganimate (in R)?

作者:GUEST BLOG

译者:赵向智

本文长度为1600字,建议阅读5分钟

本文主要介绍如何使用R语言中的gganimate创造有趣的可视化动图。

引言

数据可视化可能是数据科学领域最重要却通常最少被提及的部分。

我这么说是因为创造数据故事和可视化对你的顾客最终怎么看待你的工作有巨大的影响。数据科学不仅仅是说你的模型如何复杂或精细,它是使用基于数据的洞察力来解决问题(的范畴)。并且,为了实施这些解决方案,你的领导们需要了解你的计划。

在创造有影响力的可视化进程中,挑战之一便是创造能够自己讲话的图像。这篇文章将会告知一种方式来帮你创作可使用的生动的GIF图像(即图表可交互化格式)。当你想要显示基于时间或者基于循环的故事时,这种方式将对你非常有帮助。在图片中采用动画的形式,你可以为特定组合的参数的画出随时间流动的可比的数据。换言之,理解并且看到某些参数随时间(的演进)而发生的改变。

请允许我用一个例子展示给你:

例子:GDP与预期寿命相比较

假如说你想去展示不同的洲/国家的GDP和预期寿命是怎样随时间的改变而改变的。你认为什么是最好的方式来展现这种关系呢?

你可以考虑多种选择,比如说:

  • 创造一个和GDP、预期寿命以及时间相关的3D制图,为每个洲或国家画出线条。问题是:人类阐释以2D形式画出3D图像的能力是非常的薄弱的,尤其是当存在太多数据时。因此,这个选择不奏效。
  • 一并创造2个图表:一个展示随时间而改变的GDP,另一个则显示随时间而变的预期寿命。这是一个二维制图。我们为读者留下了很多空间去诠释。读者需要选定一个国家并且看这个国家在每一个节点上的变化,然后把他们串联起来。最后再次循环。

现在,让我们看这个生动的动图文件吧。

Gganimate包的发展使得这问题更加容易实现。在这篇文章的最后,你可以制作属于自己的动图文件并且创造自己的定制框架以在全球或当地范围内比对不同的参数。

首要事宜

请先安装以下包:

  • ggmap
  • gganimate
  • dplyr
  • animation

此外,除了以上R库,你也需要自己的系统中有Image Magick软件。你可以下载并安装这个软件(https://www.imagemagick.org/download/binaries/ImageMagick-7.0.4-7-Q16-x64-static.exe)。

获取数据

这篇文章试图用1965到2016年的地震数据来制作动图文件。最好是在地图上按年份顺序绘制全球地表活动而非静态呈现所有的数值。地震的数据集在Kaggle上是开放的(https://www.kaggle.com/usgs/earthquake-database)。数据集包括1965年至2016年地球地震活动的数据。请访问以上链接并且向下滚动以得到csv的文件夹。

从1965到2016年的发生过的里氏震级为7.0的大地震:这个数据集已经被改良过,只有里氏震级为7级的数据才被用于研究。

数据处理

为了简化流程,从csv文件夹里我们只挑选了很少几个变量:

  • 日期Date)
  • 时间(Time)
  • 经度(Latitude)
  • 纬度(Longitude)
  • 类型(Type,即地震活动的类型)
  • 宽度(Depth,即从地面闭合处到震源中心的距离)
  • ID(ID,即地震活动的事件标识)
  • 震级(Magnitude,即里氏震级的读数)

我们都准备开始用R语言译码,使用过R工作室的环境。你可以自由地使用你偏爱的任何环境。

R语言代码

把日期分割到年、月和天

我们要做这件事情是因为我们要得到对绘图非常重要的。换言之,这个方法的核心就是将框架(frame)当成另一维度,就像x,y轴,尺寸,颜色,等等。因此,你的数据中的一个变量可以被投射到框架中,这个过程就像其他变量被投射到X或者y。

使用animation包来加速gif图片中的投影

正如我们看到的那样:这个动图包含1965年到2016年多年的图片。因此,为了加速可视化的呈现,我们可以用Animation包中的ani.option()来加速。

结论

这篇文章是对动图世界的一个入门教程。读者可以在其他的项目里尝试和应用同样的方法。一些例子如下:

  • 相同的技术可以被用于比较不同国家的天气数据的热力地图。
  • 一段时期内某个特定地点洪水或其他自然灾害。
  • 可以利用德罗内三角板来见证城市地铁的增长。可以看Page Piccinini在r-Bloggers所发布的有趣的文章《随时间变化的地铁系统》(https://pagepiccinini.com/2016/09/27/metro-systems-over-time/)或者你可以直接从她的官网(https://pagepiccinini.com/2016/09/27/metro-systems-over-time/)访问她的页面。

希望你觉得这篇文章有用。如果你有任何问题,欢迎在以下的评论区询问。

原文链接:

https://www.analyticsvidhya.com/blog/2017/06/a-study-on-global-seismic-activity-between-1965-and-2016/

翻译组成员包括名企的数据科学工作者、北大清华以及海外名校的学生、业界学界大咖,他们每天阅读国内外行业资讯并精心挑选,致力于分享国外数据科学技术应用前沿动态、优质学习资源,主要包括入门指南、实战指导、深度分析、经验分享以及资源整合等系列文章。

以下为翻译组出品的往期干货大合集:

福利 | 200页国内外资源、技术指南、大咖经验:数据派翻译组独家文章大合集

转载须知

如需转载文章,请做到 1、正文前标示:转自数据派THU(ID:DatapiTHU);2、文章结尾处附上数据派二维码。

申请转载,请发送邮件至datapi@tsingdata.com

原文发布于微信公众号 - 数据派THU(DatapiTHU)

原文发表时间:2017-08-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玉树芝兰

如何用Python做情感分析?

商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地。本文帮助你一步步用Python做出自己的情感分析结果,难道你不想试试看?

1732
来自专栏新智元

深度学习动手实践:用 TensorFlow 打造“会看”的机器人

(文/Lukas Biewald)物体识别是当前机器学习最热门的方向。计算机早已能够识别如人脸、猫之类的物体,但识别更大范围里的任意物体对人工智能来说仍是难题。...

4646
来自专栏机器学习算法与Python学习

资源 | 中文NLP资源库

最近,在GitHub上,有人收罗了一份资源,汇集了40个关于中文NLP词库,涵盖了各个方面。

1882
来自专栏CreateAMind

如何用100美元和TensorFlow来造一个能“看”东西的机器人

物体识别是现在机器学习领域的热点之一。相当长的时间里,计算机已经能相当可靠地识别人脸或者猫。但在更大的图片中去识别一个指定的物体还是人工智能领域的“圣杯”。人类...

1154
来自专栏ATYUN订阅号

AI Benchmark可以测试智能手机的神经网络性能

芯片制造商高通,华为和联发科有什么共同之处?所有这三种市场硬件架构都可以加速计算机视觉,自然语言处理以及智能手机,平板电脑和其他移动设备中的其他机器学习任务。麻...

1865
来自专栏AI科技大本营的专栏

集合70多种推荐算法,东北大学老师用Java写了一个开源库,在GitHub上收获近1500个Star

【AI科技大本营导读】在经过一年多的开发工作之后,LibRec 3.0 版本终于发布了。LibRec 是一个基于 Java 的开源算法工具库,覆盖了 70 余个...

1866
来自专栏机器之心

开源 | 微软发行 Cognitive Toolkit 2.0 完整版:从性能更新到应用案例

选自Microsoft 作者:John Roach 机器之心编译 参与:黄小天、蒋思源 近日,微软在其官方博客上撰文宣布全面开源 Microsoft Cogn...

3438
来自专栏奇点大数据

入门深度学习应该学什么

最近被人问的最多的一个问题是“我想入门深度学习,我应该学些什么”。 老实说,这个问题不是那么好回答,毕竟每个人的知识背景和技能背景实在是太不一样了。如果要假设...

3767
来自专栏ThoughtWorks

Lightweight Architecture Decision Records | 雷达哔哔哔

ThoughtWorks每年都会出品两期技术雷达,这是一份关于科技行业的技术趋势报告,在四个象限:技术、平台、工具以及语言和框架对每一个条目(Blip)做采用、...

1332
来自专栏新智元

【Science重磅】自学习人工智能在预测心脏病发作上击败人类医生

【新智元导读】Science 今日报道,科学家使用能够自学习的人工智能技术,让计算机在预测心脏病的发作上击败了人类医生。一旦投入使用,这一新的诊疗手段每年将拯救...

3736

扫码关注云+社区