今天开始,要跟着大家学习一个新的可视化R包——REmap包。
说起来,这个包要归功于百度的可视化开源项目——echarts,它是国内为数不多的高水平开源可视化js库,在业界地位首屈一指。
经过大神的努力,我们终于可以在R语言中以简洁的REmap函数形式,来调用Echarts核心功能,而不用亲自去学js代码,就可以创建动态地图可视化作品。
如果有小伙伴儿熟悉百度的大数据可视化项目——百度迁徙地图,以及交通通勤图,以及后来的一带一路可视化路线图,肯定对那些动态地图上流动的线条和路径有很深的印象。
下面我们开始简单介绍REmap的主要功能:
REmap包中涵盖有一组函数,我所知道并用过的有REmap、REmapB、REmapC、REmapH。
每一个函数都对应着几种炫酷的动态效果类型:
今天我们先介绍REmap函数并利用该函数制作简单的流向图:
安装及加载:
|
|
语法介绍:
REmap函数的作图理念与ggplot其实还是有雷同的,它也是将数据信息和美学信息分开表达,数据信息包含在数据表中,而美化修饰参数都包含在theme内。
这是一个典型的REmap函数的结构,mapdata是我们所要展示的数据框格式数据集,里面包含了两列数据:起点位置、终点信息。
title用于设置主标题、subtitle用于设置副标题。而theme用于设定整个图形的主题风格,该主题是一个封装的函数变量,里面包含诸多参数信息(各种点线面的颜色、度量等信息)。
下面是一个典型的REmap主题内的参数示例:
参数说明:
- 参数一:theme为总体配色,默认选项有“Dark”、“Bright”、“Sky”、“none”
- 参数二:lineColor为线条颜色,默认是随机, 也可自行设置,如’red’
- 参数三:backgroundColor为地图外背景颜色
- 参数四:titleColor为标题颜色
- 参数五:borderColor为地图中地域边缘颜色,不同省份、城市的边缘
- 参数六:regionColor为地域颜色,即地图显示的颜色
- 参数七:labelShow为逻辑参数,是否显示地域名称,默认为T,即显示,只用于remapC函数
- 参数八:pointShow为逻辑参数,是否显示地域所在点,默认为F,不显示,只用于remapC函数
- 参数九:pointColor为pointShow中点的颜色,只用于remapC函数
REmap可以非常轻松的获取城市地点的经纬度数据:
以大连为例:
如果想要获取一组城市的经纬度信息,可以直接赋值给城市向量:
而且据说这两个函数大部分时候对拼音与汉字,甚至拼音的大小写都不敏感,所以避免了很多麻烦。
生成模拟数据集:
创建起始点:
合成数据框格式的起终点数据
数据预览:
作图函数:
|
|
运行以上代码之后,动态图表已经生成名为map_out
的对象,只需使用plot
函数调用一下map_out
图表对象就可以看到该动态图表效果。
提示下,这里的
map_out
的对象是一个js
代码生成的html
对象,运行完plot
之后,动态图表效果不是呈现在R的图表窗口而是调用了桌面浏览器的Web窗口。
|
|
运行完成之后,浏览器窗口会自动呈现动态图表效果:
其实仔细看以上代码,与ggplot
的地图代码相比,要简单很多,数据集也很简单(最重要的直接支持地点名称而不需要经纬度数据),当然这些便利性主要归功于它的底层代码是调用Echarts
项目,地理位置信息有百度地图的强大系统支持。
可选主题介绍:
Dark主题:
Sky主题:
关于主题自定义:
以上是该函数内置的三款主题,当然如果你要想自定义主题的话,也是可以的,但是需要将theme="Sky"
设置为none
,否则系统主题会覆盖掉你自定义的主题。
|
|
但是个人习惯,还是比较喜欢先将主题定义好并命名,然后在运行图表代码的时候直接饮用,这样比较利于后期主题的微调:
|
|
|
|
当然如果将数据框中的数据两列调换,那么地图就可以做成流入图。
|
|
合成数据框格式的起终点数据
如果想要存储该HTML对象,需要设定临时目录:
|
|
其实以上所有图表都是带有动态交互效果的!
联系方式:
wechat:ljty1991
Mail:578708965@qq.com
个人公众号:数据小魔方(datamofang)
qq交流群:[魔方学院]298236508
个人简介:
杜雨
财经专业研究僧;
伪数据可视化达人;
文科背景的编程小白;
喜欢研究商务图表与地理信息数据可视化,爱倒腾PowerBI、SAP DashBoard、Tableau、R ggplot2、Think-cell chart等诸如此类的数据可视化软件,创建并运营微信公众号“数据小魔方”。
Mail:578708965@qq.com
备注信息:
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。