前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言可视化——REmapH(中心热度图)

R语言可视化——REmapH(中心热度图)

作者头像
数据小磨坊
发布2018-04-11 14:57:58
4K0
发布2018-04-11 14:57:58
举报

今天是REmap系列的最后一篇——REmapH函数。

这个函数的特色是可以做中心辐射的热力图,这种热力图在气象、人口密度、海拔测绘领域有诸多运用,当然也可以上当用在商务场合——特别是跟地理信息有关的数据呈现方面。

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

data为要传入的数据,数据为三列,第一列为lon(经度),第二列为lat(维度),第三列为prob(密度/概率);

maptype为要绘制的地图类型,可选有:”china”,”world”或中国各省份名字;

theme为绘制的地图主题类型,可由get_theme函数传入;

blurSize为热力效果的泛化范围,可调整热力点中心的扩散程度;

color为热力的渐变颜色;

minAlpha为热力点的展示阈值,对应data中的prob列,作图时各点密度会对比minAlpha,以凸显不同密度所展示的不同热力分布;

opacity为透明度,调整热力图的透明度。

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设置上述点的颜色

接下来首先通过两个案例进行讲解:

options(remap.js.web=T)

这里有一个包含经纬度信息及对应密度的数据集,通过该数据集我们可以看到看到REmapH函数制作热力图的大致效果:

data<- read.csv(file="D:\\R\\map\\MoveChart\\cityvaluetop10.csv",header=T)

数据结构如下:

head(data)
       lon      lat prob
1 114.3948 23.40800 0.85
2 115.3948 24.40800 0.85
3 114.3948 23.40800 0.85
4 113.3948 23.40800 0.85
5 114.7307 27.69586 0.80
6 110.5066 28.69586 0.80
'data.frame': 48 obs. of  3 variables:
 $ lon : num  114 115 114 113 115 ...
 $ lat : num  23.4 24.4 23.4 23.4 27.7 ...
 $ prob: num  0.85 0.85 0.85 0.85 0.8 0.8 0.8 0.8 0.75 0.75 ...
map_out<-remapH(data,
       maptype = 'china',
       theme =get_theme(theme = "Dark"),
       blurSize = 70,
       color = "red",
       minAlpha = 10,
       opacity = 1,
       )
plot(map_out)

接下来制作辽宁省省域热力图数据集:

首先使用mapNames函数获取辽宁省市级行政单位:

city_ln<-mapNames("liaoning") 


[1] "大连市"   "朝阳市"   "丹东市"   "铁岭市"   "沈阳市"   "抚顺市"   "葫芦岛市" "阜新市"   "锦州市"  
[10] "鞍山市"   "本溪市"   "营口市"   "辽阳市"   "盘锦市" 

获取各市级行政单位经纬度信息:

city_list<-get_geo_position(city_ln)
> city_list
        lon      lat     city
1  121.6214 38.91934   大连市
2  120.4573 41.57949   朝阳市
3  124.3626 40.00569   丹东市
4  123.8488 42.29257   铁岭市
5  123.4390 41.81134   沈阳市
6  123.9636 41.88608   抚顺市
7  120.8434 40.71736 葫芦岛市
8  121.6765 42.02798   阜新市
9  121.1336 41.10087   锦州市
10 123.0010 41.11412   鞍山市
11 123.7735 41.29985   本溪市
12 122.2415 40.67256   营口市
13 123.2437 41.27445   辽阳市
14 122.0773 41.12594   盘锦市

生成一列密度数据:

point<-round(runif(14,min=0.3,max=0.95),2)
 [1] 0.89 0.82 0.91 0.87 0.90 0.90 0.85 0.89 0.87 0.94 0.90 0.85 0.88 0.88

合成数据框格式的热力图作图数据:

newdata<-data.frame(city_list[,1:2],point)
        lon      lat point
1  121.6214 38.91934  0.89
2  120.4573 41.57949  0.82
3  124.3626 40.00569  0.91
4  123.8488 42.29257  0.87
5  123.4390 41.81134  0.90
6  123.9636 41.88608  0.90
7  120.8434 40.71736  0.85
8  121.6765 42.02798  0.89
9  121.1336 41.10087  0.87
10 123.0010 41.11412  0.94
11 123.7735 41.29985  0.90
12 122.2415 40.67256  0.85
13 123.2437 41.27445  0.88
14 122.0773 41.12594  0.88

作图函数:

map_out1<-remapH(newdata,
       maptype = "辽宁",
       theme =get_theme(theme = "Dark"),
       blurSize = 70,
       color = "red",
       minAlpha = 10,
       opacity = 1,
       )
plot(map_out1)

因为以上数据集中使用的各市中心城市的密度数据,所以整体密度太过分散,看不出渐变效果,当然密度图的数据记录是不受数量限制的,在有较多数据点呈现密集分布的地方,可以看到非常明显的颜色热度渐变效果。

这里我通过添加一列分类数据,将以上密度图数据进行改造:

newdata$perA<-rep("A",14)
newdata$perB<-rep("B",14)
newdata$perC<-rep("C",14)

使用Reshape2包对数据进行一维转化:

mydata <- melt(newdata, id.vars=c("lon","lat","point"))
        lon      lat point variable value
1  121.6214 38.91934  0.85     perA     A
2  120.4573 41.57949  0.81     perA     A
3  124.3626 40.00569  0.91     perA     A
4  123.8488 42.29257  0.90     perA     A
5  123.4390 41.81134  0.91     perA     A
6  123.9636 41.88608  0.93     perA     A
7  120.8434 40.71736  0.91     perA     A
8  121.6765 42.02798  0.87     perA     A
9  121.1336 41.10087  0.89     perA     A
10 123.0010 41.11412  0.82     perA     A
11 123.7735 41.29985  0.88     perA     A
12 122.2415 40.67256  0.95     perA     A
13 123.2437 41.27445  0.90     perA     A
14 122.0773 41.12594  0.84     perA     A
15 121.6214 38.91934  0.85     perB     B
16 120.4573 41.57949  0.81     perB     B
17 124.3626 40.00569  0.91     perB     B
18 123.8488 42.29257  0.90     perB     B
19 123.4390 41.81134  0.91     perB     B
20 123.9636 41.88608  0.93     perB     B
21 120.8434 40.71736  0.91     perB     B
22 121.6765 42.02798  0.87     perB     B
23 121.1336 41.10087  0.89     perB     B
24 123.0010 41.11412  0.82     perB     B
25 123.7735 41.29985  0.88     perB     B
26 122.2415 40.67256  0.95     perB     B
27 123.2437 41.27445  0.90     perB     B
28 122.0773 41.12594  0.84     perB     B
29 121.6214 38.91934  0.85     perC     C
30 120.4573 41.57949  0.81     perC     C
31 124.3626 40.00569  0.91     perC     C
32 123.8488 42.29257  0.90     perC     C
33 123.4390 41.81134  0.91     perC     C
34 123.9636 41.88608  0.93     perC     C
35 120.8434 40.71736  0.91     perC     C
36 121.6765 42.02798  0.87     perC     C
37 121.1336 41.10087  0.89     perC     C
38 123.0010 41.11412  0.82     perC     C
39 123.7735 41.29985  0.88     perC     C
40 122.2415 40.67256  0.95     perC     C
41 123.2437 41.27445  0.90     perC     C
42 122.0773 41.12594  0.84     perC     C

从新运行图表函数:

map_out2<-remapH(newdata[,1:3],
       maptype = "辽宁",
       theme =get_theme(theme = "Dark"),
       blurSize = 70,
       color = "red",
       minAlpha = 10,
       opacity = 1,
       )
plot(map_out2)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据小魔方 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档