作者简介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语言爬虫实战案例分享

【R图秀-6】地震来了相关推荐

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

    作者简介Introduction 傅兴:个人公众号:Rapp 往期回顾 [R图秀-1]12306列车数据可视化 [R图秀-2]社交网络数据可视化(一) 今天在Tableau Public的网站上看到一 ...

  2. 第8章 图形化显示地震危机数据(海地)

    第8章 图形化显示地震危机数据(海地) import pandas as pd import numpy as np from pandas import Series,DataFrame impor ...

  3. 横向导出excel_万能转换:R图和统计表转成发表级的Word、PPT、Excel、HTML、Latex、矢量图等...

    R包export可以轻松的将R绘制的图和统计表输出到Microsoft Office(Word,PowerPoint和Excel),HTML和Latex中,其质量可以直接用于发表. 你和PPT高手之间 ...

  4. 万能转换:R图转成Word、PPT、Excel、HTML、Latex、矢量图等

    R包export可以轻松的将R绘制的图和统计表输出到 Microsoft Office (Word.PowerPoint和Excel).HTML和Latex中,其质量可以直接用于发表. 你和PPT高手 ...

  5. R图转成Word、PPT、Excel、HTML、Latex、矢量图等

    可以用命令将交互式R图或ggplot2.Lattice或base R图保存到Microsoft Word.Powerpoint或其他各种位图或矢量格式. 完全可编辑的Powerpoint矢量格式输出, ...

  6. 绘制E—R图(详细)

    ER图的实体(entity)即数据模型中的数据对象,例如人.学生.音乐都可以作为一个数据对象,用长方体来表示,每个实体都有自己的实体成员(entity member)或者说实体对象(entity in ...

  7. 与体育行业有关的e–r图_体育产业与相关产业的产业关联度研究

    体育产业与相关产业的产业关联度研究 樊旭 ; 毛文秀 [期刊名称] <湖北科技学院学报> [年 ( 卷 ), 期] 2016(036)010 [摘要] 体育产业作为一个产业关联度较高的部门 ...

  8. mysql e r图_mysql数据库E-R图

    E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型.属性和联系的方法,用来描述现实世界的概念模型. 它是描述现实世界关系概念模型的有效方法.是表示概 ...

  9. mysql中e r图又叫_E-R图是什么

    E-R图,也称实体-关系图,是用来显示了实体集之间关系的.它提供了表示实体类型.属性和联系的方法:用来描述现实世界的概念模型.ER模型是数据库的设计或蓝图,以后可以作为数据库实现. 在E-R图中,实体 ...

  10. mysql食堂系统E R图_教务管理系统数据库E/R图

    Android Studio :enable vt-x in your bios security,已经打开还是报错的解决方法 quote: For Windows 10: First of all, ...

最新文章

  1. 你需要了解的load和initialize
  2. SpringBoot 学习 | raibaby halo 之安装部署 - Ali0th
  3. Android平台 Psensor传感器调试方法
  4. iOS学习之iOS沙盒(sandbox)机制和文件操作(二)
  5. 什么是485转光纤?485光纤转换器功能特点及技术参数详解
  6. django-模板的功能与配置
  7. android关键应用程序,Android应用程序基础.pdf
  8. Framework Ventures联合创始人:未来两年DeFi TVL将提升10倍
  9. 建自己的小屋真辛苦啊?!·##¥
  10. 专业思维和战略思维的区别在哪
  11. jquery常用遍历循环处理
  12. token什么意思中文在C语言中,token是什么意思?
  13. 【大咖周刊】Linus 在谷歌介绍 Git、IBM340亿收购小红帽、IDE Visual Studio 开始支持 Java 了...
  14. [蓝桥杯]分解质因数
  15. CANOpen协议详解(一):CANfestival源码分析
  16. 细说上帝视角游戏的快速创建
  17. java中任何变量都可以被赋值为null,关于异常处理:为什么“throw null”没有在Java中创建编译错误?...
  18. goland-gopath
  19. 用bat批量启动多个软件/程序
  20. 爱情四十三课,热战与冷战

热门文章

  1. 2T架构师学习资料干货分享
  2. 国内开源落后?那是不是要做点什么。
  3. 一位读者关于买房的困惑
  4. 2017 上半年总结
  5. 吐血推荐珍藏的Chrome插件
  6. nginx日志采集 mysql_shell + go + mysql nginx日志统计 (三) :数据的展示
  7. 上海 day16 -- python 常用模块1
  8. MVC中单选按钮的实现
  9. python对象的深复制与浅复制
  10. 关于JSP post请求乱码的问题