【R图秀-6】地震来了

作者简介Introduction

傅兴:个人公众号:Rapp

往期回顾

【R图秀-1】12306列车数据可视化

【R图秀-2】社交网络数据可视化(一)

【R图秀-3】——“全球和平指数”可视化

【R图秀】情人节快乐!

【R图秀-5】将薪比薪

前几天在网上发现了一个有趣的公共数据源:USGS Earthquake Hazards Program ( http://earthquake.usgs.gov/ ) 这个网站收录了全球范围内的地震数据,包括地震发生的时间、经纬度和震级等信息。

我们不仅可以通过网页搜索并下载所需的数据,还可以利用网站提供的API,将参数传递给URL从而利用程序自动获取数据。本文采用的是第二种方法。


这个数据非常适合我们练习地图数据的可视化,今天我们就一起来用R语言制作几个炫酷的全球地震数据分布图。

R图秀曾经展示过静态地图的制作方法,今天我们要从2个方面挑战更高的难度:
1. 动态数据,随着时间变化,改变地图上的数据点
2. 动态地图,画一个旋转的地球,360度展示地图上的数据点

我们选用的工具是mapmate ( https://leonawicz.github.io/mapmate/index.html )

mapmate = map animate,是专门用来做地图动画的R软件包。它的原理是首先生成一系列图像文件(每一个文件对应一帧),然后利用ffmpeg软件将所有文件整合在一起生成一个GIF动画。

因此,我们在安装完mapmate包后,还要看看自己的系统里面有没有ffmpeg,如果没有,可以在Linux终端中输入下面的命令:

sudo apt-get install ffmpeg

接下来我们就一步步地制作我们的动画短片(如果在阅读中遇到问题,建议首先阅读mapmate的官方文档):
1. 加载所需要的软件包

2. 下载近一个月内,震级大于2.5的地震数据,只保留经(lon)纬(lat)度和震级(mag)

3. 将地震数据制作成一个大的list,list中的每个dataframe对应一帧(我们要360度展示,所以制作了360帧),注意要给每个dataframe添加frameID,frameID就表示该dataframe是来自哪一帧。

mapmate包中自带了2个很有用的数据集。一个是bathymetry(海洋深度数据),另一个是borders(国境线)。和地震数据类似,我们也把它们制作成360帧。

4. save_map函数是mapmate的核心,我们可以先画第一帧数据(代码中加注释的部分),看看效果如何:
海洋深度:

国境线:

地震点:

如果没有问题,我们就继续制作剩下的359帧。为了加快速度,我用了mclapply函数,利用32个CPU同时计算:

5. save_map生成的是背景透明的png文件,我们可以把bath,border和earthquake图像作为3个图层merge在一起。这里用的是ImageMagick软件的convert工具。

merge后的效果:

最后用ffmpeg将所有图像制作成一个gif文件。
代码如下:

6. 除了地球模式,mapmate还可以制作平面地图,我们可以将上面的代码稍作修改:

这里的目的是让第一帧只有一个点,第2帧有2个点,以此类推,大家可以想象一下出来的效果是怎样的。

7. 我还不满足得到的gif动画,接下来我利用一些音频和视频编辑软件,制作了一个名为《Eearthquake》的视频短片,供大家欣赏。https://v.qq.com/x/page/i0377gidh77.html

class="video_iframe" data-vidtype="1" allowfullscreen="" scrolling="no" frameborder="0" data-ratio="1.7647058823529411" data-w="480" data-src="http://v.qq.com/iframe/player.html?vid=i0377gidh77&width=670&height=376.875&auto=0" style="display: none; width: 670px !important; height: 376.875px !important;" width="670" height="376.875" data-vh="376.875" data-vw="670"/>



 往期精彩内容整理合集 

2017年R语言发展报告(国内)

R语言中文社区历史文章整理(作者篇)

R语言中文社区历史文章整理(类型篇)


公众号后台回复关键字即可学习

回复 R                  R语言快速入门及数据挖掘 
回复 Kaggle案例  Kaggle十大案例精讲(连载中)
回复 文本挖掘      手把手教你做文本挖掘
回复 可视化          R语言可视化在商务场景中的应用 
回复 大数据         大数据系列免费视频教程 
回复 量化投资      张丹教你如何用R语言量化投资 
回复 用户画像      京东大数据,揭秘用户画像
回复 数据挖掘     常用数据挖掘算法原理解释与应用
回复 机器学习     人工智能系列之机器学习与实践
回复 爬虫            R语言爬虫实战案例分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值