首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据地图系列7|R语言版(上)

数据地图系列7|R语言版(上)

作者头像
数据小磨坊
发布2018-04-10 17:11:20
1.9K1
发布2018-04-10 17:11:20
举报
文章被收录于专栏:数据小魔方数据小魔方

今天跟大家分享的是数据地图系列的第七篇——使用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语言中可调用的颜色参数:

获取作图数据源文件(42.7MB):https://pan.baidu.com/s/1kVcuQpT

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-06-19,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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