利用REmap包做地图可视化
- 地图可视化
- 利用REmap获取行政信息
地图可视化
R语言REmap包具有十分强大的地图可视化功能。可以十分方便地做空间热力图和空间迁徙图,使用十分方便,地图可视化也使得空间信息更加丰富直观。
本文将从2018年全国各省客运量入手,了解地图可视化
<本文是学习《R语言统计分析与机器学习》后的学习笔记>
数据概况:
从搜集到的数据可看出,该数据给出了省份,客运量,经纬度等数据,可以十分方便地利用REmap包进行地图可视化。
- 导入需要的包 ,导入需要的包;
library(REmap)
library(readxl)
- 导入数据 创建新的data1,data2,以适应画不同种类的热力图
data<- read_excel("data.xlsx")
data1<-data.frame(data$省份,data$客运数量)
data2<-data.frame(data$经度,data$维度,data$客运数量)
运行结果
data1结构如下:
data2结构如下:
绘制空间填充图
result <- remapC(data1,
title = '2018年全国客运量热力图',
maptype = 'china',
color = 'red',
theme = get_theme('Sky'),
maxdata = 34000,
mindata = 500)
print(result)
结果如下:
绘制空间辐射图
result <- remapH(data2,
maptype = 'china',
theme = get_theme('Blue'),
blurSize = 65,
color = 'red',
minAlpha = 40,
opacity = 2)
print(result)
参数的介绍:
>data为要传入的数据,数据为三列,第一列为lon(经度),第二列为lat(维度),第三列为prob(密度/概率);
>maptype为要绘制的地图类型,可选有:”china”,”world”或中国各省份名字;
>theme为绘制的地图主题类型,可由get_theme函数传入;
>blurSize为热力效果的泛化范围,可调整热力点中心的扩散程度;
>color为热力的渐变颜色;
>minAlpha为热力点的展示阈值,对应data中的prob列,作图时各点密度会对比minAlpha,以凸显不同密度所展示的不同热力分布;
>opacity为透明度,调整热力图的透明度。
结果如下:
由图像即可得出我们想要的结果。
关于REmap中get_theme()的一点补充。
get_theme(theme = "Dark",
lineColor = "Random",
backgroundColor = "#1b1b1b",
titleColor = "#fff",
borderColor = "rgba(100,149,237,1)",
regionColor = "#1b1b1b",
labelShow = T,
pointShow = F,
pointColor = "gold"
)
其中对应参数意义如下:
theme为主题,设置该参数后无需设置get_theme里其他参数,可选有”Dark”、”Sky”、”blue”和”none”四种
lineColoe为线条颜色,对应为map图里面迁徙线条的颜色
backgroundColor为图片的背景色,支持16进制颜色输入,也支持rgb()函数和rgba()
titleColor为标题的颜色,设置同上
borderColor为地图中各省、市边界颜色
regionColor为地图中各区域颜色,各省份和市
labelShow为是否展示各省、市名字,设置为True时展示
pointShow为是否展示各省会城市所在点,设置为True时展示
pointColor设置上述点的颜色
拓展 REmap还可以画省内的地图。只需要修改maptype = 'china’为对应省份名称及相应的数据data即可。
利用REmap获取行政信息
- 可获取各市级经纬度信息:
> city<-mapNames("hubei")
> print(city)
[1] "恩施土家族苗族自治州" "十堰市" "宜昌市"
[4] "襄樊市" "黄冈市" "荆州市"
[7] "荆门市" "咸宁市" "随州市"
[10] "孝感市" "武汉市" "黄石市"
[13] "神农架林区" "天门市" "仙桃市"
[16] "潜江市" "鄂州市"
- 还可以根据名称获取经纬度信息
> library("baidumap")
baidumap 0.2.2
Apply an application from here: http://lbsyun.baidu.com/apiconsole/key
Then register you key by running `options(baidumap.key = 'xxx')`
> city_list<-get_geo_position(city)
There were 18 warnings (use warnings() to see them)
> print(city_list)
[1] lon lat city
<0 rows> (or 0-length row.names)
REmap做人口迁徙图也十分便捷。下图即为武汉一天人口迁出图。