
点击“蓝字”关注我们吧
“
热力图最初来源于网络,是以特殊高亮的形式显示访客热衷的页面区域和访客所在的地理区域的图示。在如今的大数据时代,热力图可是直接推动大数据发展的技术。
迁徙热力图,爱心大小对应数目大小
本期我们将用R来实现绘制区域热力图。在实现过程中需要用到下面几个程序包,大家可以提前下载安装好。
install.packages(mapdata)
install.packages(maptools)
install.packages(ggplot2)
install.packages(plyr)
install.packages(rgdal)
install.packages(mapproj)
1 mapdata绘制热力图
热力图的绘制自然离不开地图数据,maps是R中一个基本地图数据包,但是其中不包含中国的数据,因此我们需要额外下载mapdata数据包。
mapdata数据包搜集了中国地区的地图数据,以及中国各省边界线的数据。使用下面的命令绘制出中国省级地图:
china_map "geo_data//bou2_4p.shp")
plot(china_map)
mapdata绘制得到的地图
得到的地图较为扁平(左图),我们使用下面的命令进行调整使其显示正常(右图)。
# 图像过于扁平,需要进行调整
ggplot(china_map, aes(x = long, y = lat,group = group)) +
geom_polygon(fill = "white", colour = "black") +
coord_map("polyconic") +
theme(
panel.grid = element_blank(),panel.background = element_blank(),
axis.text = element_blank(),axis.ticks =element_blank(),
axis.title = element_blank(),
legend.position = c(0.2, 0.3)
)
接下来我们可以使用在股票市场搜集的全国各省2018年9月4号的换手率(HS)和量比(LB)数据来绘制热力图,参考代码如下
x xs # 地图中共计有925个地域信息
china_map1 china_map_data type = "full")# 基于id进行连接# unique(china_map@data$NAME)# 查看地图数据中保存的地域名称,编辑自己的数据与其一致
mydata "geo_data//data_area_stock.csv",
header = T,
as.is = T)
china_data type = "full")# 基于NAME字段进行连接,NAME字段来自于地图文件中
province_city"geo_data//pcity.csv",header=T,as.is=T)#获取省会城市坐标
ggplot(china_data,aes(long,lat))+
geom_polygon(aes(group=group,fill =HS),colour="grey",size=0.01)+
scale_fill_gradient(low="white",high="red")+
coord_map("polyconic")+
geom_text(aes(x=jd,y=wd,label=name),data=province_city,colour="black",size=2.5)+
theme(
panel.grid=element_blank(),
panel.background=element_blank(),
axis.text=element_blank(),
axis.ticks=element_blank(),
axis.title=element_blank()
)##参数“HS”为换手率,基于该指标绘制热力图
就得到下面两张换手率和量比的全国各省热力图,通过颜色的深浅可以直观得看出各个省份地区之间的差异。
股票热力图
2 baidumap绘制热力图
虽然mapdata可以绘制省级的热力图,但是其包含的而数据还是较少,这使得热力图的创建形式大打折扣。
2011年1月10日,百度统计迎来了历史上最为重要的一次功能升级,全球第一款免费智能热力图功能正式上线。热力图可显性、直观地将网页流量数据分布通过不同颜色区块呈现,给中小网站网页优化与调整提供了有力的参考依据,方便合作网站提高用户体验。
百度地图开放平台
百度地图API是一套为开发者免费提供的基于百度地图的应用程序接口,提供基本地图搜索、位置搜索、周边搜索等功能。下面我们介绍使用R软件对接百度地图API来获取地图数据,从而进行热力图的绘制。
这一部分的实现需要运用下面的软件包,大家在操作前先下载安装好。
install.packages(baidumap)
install.packages(REmap)
install.packages(ggmap)
install.packages(RCurl)
install.packages(rjson)
要能够顺利的和百度地图API进行对接,一定要在百度地图平台申请到自己ak密钥,在R软件向百度地图发出请求时是需要该密钥才能成功获取相应的地图数据。
## 绘制重庆大学2018年本科生全国计划招生人数热力图
province "china") # 全国省份
number "2018jhzs.csv",header = T)# 重庆大学招生人数
cqu_data cqu_data "number"],decreasing=T),]
cqu_data origin "重庆",length(province))
destination line_data map_out1 maptype = "china",# 绘制全国地图
title = "重庆大学2018年全国计划招生热力图",
theme = get_theme("Drak"),# 设置热力图的主题
color=c("#CD0000","#FFEC8B"),# 设置热力图颜色变化起、终点
markLineData=line_data,# 连线所需数据
markLineTheme=markLineControl(# 对连线进行格式设置
color="white",
lineWidth=2,
lineType="dashed"
),
markPointData=cqu_data[1],# 标注的地图地点数据
markPointTheme=markPointControl(# 对地图地点数据格式设置
symbolSize=13,
effect=T,
effectType="scale",
color="white"
)
)
plot(map_out1)
我在网上搜集了2018年自己的母校重庆大学在各个省份的计划招生人数,通过R软件利用Remap包画出各个省份向重庆迁徙的示意图,同时每个省份的颜色深浅按照招生人数来着色。
重大招生迁徙图
可以看出,R最终调用web来打开图片,并且这张图片是动态的且与用户交互的。
重庆市各个区县的平均房价热力图
大家可以通过baidumap获取地区数据,画出某个省份各个市的热力图。比如面这张我画的2018年1月份重庆市各个区县的平均房价热力图。
3 结束语
当然,baidumap只是提供更加庞大的地图数据,想要画出精美的热力图还要好好研究Remap包的使用方式,通过调整不通的参数从而提高图片的表现力。

扫码关注我们小Q统计专注统计学习知识分享