这一篇是leaflet动态地图的第四篇,也是最值得推荐的一篇,这一篇涉及到热力地图填充,通过该篇内容,大家可以体会大leaflet在线地图的R借口在处理热力地图上面颜色标度映射的强大优势。
加载包:
|
|
地图素材加载:
(leaflet支持多种地图素材,比如常见的shapefile格式、json格式以及其他在线地图,但是因为json格式本来还没有很熟练,这里用shp格式地图素材为例进行加讲解)。
肯定会有小伙伴儿会问,既然leaflet本身就是在线地图,为啥还要费事儿加载shp地图素材就进行映射,因为leaflet在线地图提供的地图底图本身具有多级缩放特性,每一缩放级别都有对应的行政区划界线,但是这些参数和行政区划是封装在底层的js语言中的,我们无法使用R语言直接进行调用,只能作为一个图层素材进行背景修饰,说白了,其实我们想要的仅仅是多级缩放的动态切换效果,这样再结合我们自定义的地图素材,可以呈现出更加完美的效果。(只有热力填充地图需要定义区域界线,而点图和线图都可以直接利用leaflet本身的地图素材,因为只需要坐标点位置即可)。
我们常用的地图素材资源无非以下三种,R包内置的地图数据、shapefile格式和json格式。以下是三种格式素材导入并在leaflet中制作的地图的基本代码:
maps包:
|
|
shapefile:
json文件:
前两种素材作图过程大同小异,特别是一些标度的属性声明很类似ggplot中的函数过程,但是json格式的素材操作起来就不是很友好,他的标度属性是要在数据文件中新建style的list对象进行生命,而且json格式中的list非常多,结构相对复杂,至今我也没完全搞明白如果自由操作。
几张分类颜色标度填充效果:
下面是承接上面shapefile格式素材做展现的四中颜色标度(三种连续性标度和一种分类标度的映射过程)。
colorQuantile(连续性数值变量的百分比颜色过度):
以下两种同属连续性数值变量(使用颜色数量不同)
|
|
以下两种也同属连续性数值变量的颜色标度映射
(但是可以自定义分组数量,其实实质上是对变量分割,后以分组形式填充,更准确的说,确实是应用了变量转换的方式(数值转有序因子),但是过程是自动进行的,而不是像在ggplot中一样不需手动转换)
|
|
|
|
离散标度:
(这个例子是用在变量本身就是因子变量的情况下,算是分类变量情况下的颜色标度映射)
1234567 china_map<-readShapePoly("c:/rstudy/bou2_4p.shp")mydata<-read.csv("c:/rstudy/geshengzhibiao.csv")mydata$type<-factor(sample(LETTERS[1:5],33,replace=TRUE))shape <- merge(china_map,mydata,by="NAME")pal <- colorFactor(c("green","red","blue","yellow","brown"), domain = c("A", "B","C","D","E"))#设置色盘:i_popup<-paste0("<strong>Province:</strong>",shape$NAME,"<br>","<strong>Level:</strong>",shape$type)
|
|
以上地图效果都支持多节自动缩放和弹窗动态信息显示(需设置popup属性及少量html交互代码)
leaflet在线地图底层由js源码编写,天然支持html语言,如能结合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 国际许可协议进行许可。