今天就跟大家聊聊有关如何使用R语言制作热力数据地图,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
创新互联是一家专业提供响水企业网站建设,专注与成都网站设计、成都网站建设、H5技术、小程序制作等业务。10年已为响水众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
今天跟大家分享的是使用R语言制作热力数据地图
也许很多小伙伴儿对于R语言还很陌生,感觉很神秘。
确实,R语言的数据地图需要使用很长的代码来写。但是就像我们学习高数和微积分一样,再复杂再庞大的公式,都会有计算软件帮你代劳,而你只需要知道怎么调整参数、控制路径,并且明白每一句代码的实现功能就可以了,无需记住每一串代码的详细内涵和写法。
而且接下来要写的诸多代码,大部分都并非自己写的,而是从网上拼凑,经过整理与汇总后的。坦白的说,绝大部分自己都写不出来,语法也很费解,只是勉强知道大概可以实现什么功能。
但是我依然能够达到自己的目的,自定义所需的指标数据,自定义输出的数据地图的填充颜色、标签等外观和格式。
首先介绍小魔方的R语言系统配置环境:
R version 3.2.3
RStudio Version 0.99.484
因为R语言原始编辑器的操作不够灵活,所以我将在R的第三方编译器:R Studio中完成以下的数据地图代码操作。
在正式开始之前,必须确保你的R语言环境中已经安装以下包:
ggplot2
plyr
maptools
如果还未安装,需要先安装:install.packages("ggplot2","plyr","maptools")
然后下载地图的作图数据文件:(该文件获取途径比较难,所以我会直接共享在网盘里,点击文末阅读原文获取。)
获取该作图数据文件包之后解压放在C盘根目录下。(这路径比较短,易于引用,无需再修改代码引用路径。)
下面是正式作图步骤:
1、加载所需要的R包:
library(ggplot2)
library(plyr)
library(maptools)
2、读入作图数据:
china_map = readShapePoly("c:/rstudy/bou2_4p.shp")
你可以通过代码查看该数据文件的数据结构:
summary(china_map)
3、整理与合并作图作图数据
x <- china_map@data #读取行政信息
xs <- data.frame(x,id=seq(0:924)-1) #含岛屿共925个形状
china_map1 <- fortify(china_map) #转化为数据框
china_map_data <- join(china_map1, xs, type = "full") #合并两个数据框
以上四句代码是从原始地图数据文件中提取地图经纬度坐标和行政区划名称并合并成一个数据文件:china_map_data
通过代码:head(china_map_data)
你可以查看到该合并文件的内部结构:
4、读入指标数据
mydata <- read.csv("c:/rstudy/geshengzhibiao.csv") #读取业务指标数据,csv格式
以上的geshengzhibiao.csv数据文件是我单独使用excel完成数据输入并另存为.CSV格式(与之前下载的地图数据文件存放在一个地方,便于引用)的指标数据文件,也就是我们以后用来输入自己业务指标的数据文件。(最后共享的文件里包含此.CSV文件,你只需要使用excel打开,修改为自己需要的指标数据,并继续存为.CSV格式就可以了)
数据结构如下:
china_data <- join(china_map_data, mydata, type="full") #合并两个数据框
5、输出地图(这个代码有点复杂,不过你只需要理解其中几个重要环节参数就OK了)
ggplot(china_data, aes(x = long, y = lat, group = group,fill = zhibiao)) +
geom_polygon(colour="grey40") +
scale_fill_gradient(low="white",high="steelblue") + #指定渐变填充色,可使用RGB
coord_map("polyconic") + #指定投影方式为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)
) #【无省名:】
以上代码及其输出的热力数据地图是使用R中的经典数据可视化包——ggplot2包完成的。其中通过多个图层叠加(图层之间用“+”实现连接)。
其中轮廓线颜色是使用geom_polygon(colour="grey40")完成的;
填充的渐变色是通过制定渐变色范围实现的:scale_fill_gradient(low="white",high="steelblue")
指标引用是通过fill = zhibiao实现的,其他的语句是控制图层元素(一些无伤大雅的元素)
以上版本地图是无标签版的热力数据地图。
下面的代码是给地图添加省份标签和数值指标:
province_city <- read.csv("c:/rstudy/chinaprovincecity.csv") #读取省会城市坐标
ggplot(china_data,aes(long,lat))+
geom_polygon(aes(group=group,fill=zhibiao),colour="grey60")+
scale_fill_gradient(low="white",high="steelblue") +
coord_map("polyconic") +
geom_text(aes(x = jd,y = wd,label = province), data =province_city)+
theme(
panel.grid = element_blank(),
panel.background = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
axis.title = element_blank()
) #【带省标签:】
语法上略有不同,但大同小异,可以参照上面的理解。
看完上述内容,你们对如何使用R语言制作热力数据地图有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。