• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

R语言地图可视化:基于REmap包

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、获取经纬度坐标函数
1、get_city_coord():获得城市的位置信息
2、get_geo_position():获得城市向量的位置信息

二、地图函数
1、热力图:remapH()

remapH(data, 
      maptype = 'china',
      theme = get_theme("Dark"),
      blurSize = 30,
      color = c('blue', 'cyan', 'lime', 'yellow', 'red'),
      minAlpha = 0.05,
      opacity = 1,
      ...)

参数解释

data:数据框,包括经度、纬度、密度
maptype:地图的类型,如'china'、'world'以及中国的省份
theme:主题,控制地图的颜色
blurSize:热力效果范围,默认30
color:热力图的渐变颜色
minAlpha:如果密度值小雨最小alpha,热力图会把这个密度设为最小alpha,从而确保密度小的点在地图上也能够看出来
opacity:热力图的不透明度,默认值为1

2、方位图或迁徙图:remapB()

remapB(center = c(104.114129,37.550339),
       zoom = 5,
       color = "Bright",
       title = "",
       subtitle = "",
       markLineData = NA,
       markPointData = NA,
       markLineTheme = markLineControl(),
       markPointTheme = markPointControl(),
       geoData = NA)

参数解释

center:地图的中心位置
zoom:地图的大小,
color:地图的颜色
title:地图标题
subtitle:次标题
markLineData:绘制迁徙图时用此函数
markPointData:绘制方位图时用此函数

3、填充地图:remarkC()

remapC(data,
       maptype = 'china',
      markLineData = NULL,
      markPointData = NULL,
      color = c('#1e90ff','#f0ffff'),
      theme = get_theme("Bright"),
      title = "",
      subtitle = "",
      markLineTheme = markLineControl(),
      markPointTheme = markPointControl(),
      geoData = NA,
      mindata = NA,
      maxdata = NA)

参数解释

data:数据框,包括位置名和对应的值
maptype:'china'、'world'、或中国的省份
markLineData:data for mark line
markPointData:data for mark point
color:vector of the color, if the length of color is 1, white will be added to the color.

三、可视化案例
案例A、remapH()函数绘制热力图

1、生成城市名单

library(REmap)
cities <- mapNames('zhejiang')
cities
[1] "丽水市" "杭州市" "温州市" "宁波市" "舟山市"
[6] "台州市" "金华市" "衢州市" "绍兴市" "嘉兴市"
[11] "湖州市"

2、获取城市经纬度

city_Geo <- get_geo_position(cities)
city_Geo
        lon      lat   city
1  119.9296 28.47328 丽水市
2  120.2155 30.25308 杭州市
3  120.7065 28.00109 温州市
4  121.6286 29.86603 宁波市
5  122.2136 29.99091 舟山市
6  121.4274 28.66219 台州市
7  119.6534 29.08464 金华市
8  118.8666 28.97555 衢州市
9  120.5855 30.03637 绍兴市
10 120.7635 30.75097 嘉兴市
11 120.0945 30.89896 湖州市

生成一系列密度

percent <- runif(11, min = 0.25, max = 0.9)
percent
[1] 0.5792101 0.5989498 0.4184216 0.7719849
[5] 0.7556479 0.6388627 0.6520455 0.5641716
[9] 0.4279690 0.8441732 0.6033032

合并成绘图数据

data_all <- data.frame(city_Geo[, 1:2], percent)
data_all
        lon      lat   percent
1  119.9296 28.47328 0.5792101
2  120.2155 30.25308 0.5989498
3  120.7065 28.00109 0.4184216
4  121.6286 29.86603 0.7719849
5  122.2136 29.99091 0.7556479
6  121.4274 28.66219 0.6388627
7  119.6534 29.08464 0.6520455
8  118.8666 28.97555 0.5641716
9  120.5855 30.03637 0.4279690
10 120.7635 30.75097 0.8441732
11 120.0945 30.89896 0.6033032

3、绘制热力图

result <- remapH(data_all,
                            maptype = '浙江',
                            theme = get_theme('Dark'),
                            blurSize = 35,
                            color = 'red',
                            minAlpha = 10,
                            opacity = 1)

4、绘制出来的地图如下(经纬度坐标好像不太精确):

案例B、remapB()函数绘制方位图

1、获取目标大学名单

university <- c('浙江财经大学', '浙江工商大学', '浙江理工大学', '杭州电子科技大学')

2、获取目标大学经纬度

uni_geo <- get_geo_position(university)
uni_geo
       lon      lat             city
1 120.1620 30.32866 浙江大学城市学院
2 120.3962 30.31544     浙江工商大学
3 120.0933 30.30869         浙江大学
4 120.3495 30.32055 杭州电子科技大学

3、绘制方位图

uni_result <- remapB(markPointData = data.frame(uni_geo$city),
					 markPointTheme = markPointControl(symbol = 'circle',
					                                   effect = T,
					                                   symbolSize = 12,
					                                   color = 'red'),
					 geoData = uni_geo
)

4、绘制出来的地图效果如下(动态):

案例C、remapB()函数绘制连线图

1、假设目标城市、获取经纬度信息

location <- c('杭州市','温州市','丽水市')
loc_geo <- get_geo_position(location)
loc_geo
       lon      lat   city
1 120.2155 30.25308 杭州市
2 120.7065 28.00109 温州市
3 119.9296 28.47328 丽水市

2、构造起始点信息

start_point <- location[2:3]
terminal_point <- location[c(3,1)]
data_DF <- data.frame(start_point, terminal_point)
data_DF
  start_point terminal_point
1      温州市         丽水市
2      丽水市         杭州市

3、绘制地图

loc_result <- remapB(
	center = get_city_coord('杭州市'),
	color = 'midnight',
	markLineData = data_DF,
	markLineTheme = markLineControl(effect = T, 
									smoothness = 0,
									symbolSize = c(3,3)),
	geoData = loc_geo)

4、绘制的连线图效果如下:

案例D、remapB()函数绘制迁徙图
1、虚构一份数据

start_point <- rep('温州市',2)
destination <- c('丽水市', '杭州市')
data_DF <- data.frame(start_point, destination)
data_DF
  start_point terminal_point
1      温州市         丽水市
2      丽水市         杭州市

2、绘制迁徙图

result <- remap(data_DF, theme = get_theme('bright'))

3、迁徙图效果如下:

案例E、remapC()函数绘制填充图
1、虚构城市名单及对应值

city <- mapNames('zhejiang')
value <- runif(11, min = 1, max = 100)
data_DF <- data.frame(city, value)
data_DF
     city     value
1  丽水市  3.509584
2  杭州市 61.542740
3  温州市 12.679259
4  宁波市 67.178476
5  舟山市 24.896772
6  台州市 18.937361
7  金华市 73.125014
8  衢州市 30.247672
9  绍兴市 48.873504
10 嘉兴市 44.157908
11 湖州市 92.731507

2、绘制填充图:

result <- remapC(data_DF,
				 title = '浙江省热力图',
				 maptype = 'zhejiang',
				 color = 'red',
				 theme = get_theme('Dark'),
				 maxdata = 100, 
				 mindata = 1)

3、效果如下:

参考链接:https://zhuanlan.zhihu.com/p/23247602


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
R语言关于更改变量的名称发布时间:2022-07-18
下一篇:
R语言 创建矩阵发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap