查看原文
其他

数据地图系列8|R语言版数据地图(下)

2016-06-20 小魔方 数据小魔方

今天要跟大家分享的是数据地图系列的第八篇——R语言版数据地图(下),分省(市级)热力地图。


步骤与昨天分享的中国热力地图步骤基本一致,只是需要调用的数据文件和需要自定义的指标文件略有本不同。


R语言系统环境配置:


R version 3.2.3

RStudio Version 0.99.484


在正式开始之前,必须确保你的R语言环境中已经安装以下包:


ggplot2

plyr

maptools


如果还未安装,需要先安装:install.packages("ggplot2","plyr","maptools")


下面是正式作图步骤:


1、加载所需要的R包:


library(ggplot2)

library(plyr)

library(maptools)


2、读入作图数据:


CHN_adm2 <- readShapePoly("c:/rstudy/CHN_adm/CHN_adm2.shp")  读入数据文件


3、整合与转化数据


CHN_adm2_1 <- fortify(CHN_adm2)     #转化为数据框

x <- CHN_adm2@data          #读取行政信息

xs <- data.frame(x,id=seq(0:344)-1)          #总共345行

china_map_data <- join(CHN_adm2_1, xs, type = "full")          #合并形状数据与行政


4、抽取安徽省的整合数据


anhui <-subset(china_map_data,NAME_1=="Anhui")          #取出安徽省的子集


5、读入指标数据


mydata=read.csv("c:/rstudy/anhui.csv")                  #打开自定义的指标文件。



以上指标数据需要你自己定义,使用excel文件创建,指标数据输入完成之后,另存为.CSV格式(存至c:/rstudy/下,这样便于引用,当然这些指标数据文件在昨天分享的数据文档里已经为你创建好了,你只需要修改数据就可以了)


anhui_data <- join(anhui, mydata, type="full")          #合并地图数据与业务数据



6、运行代码:


ggplot(anhui_data, aes(x = long, y = lat, group = group,fill=zhibiao)) +

     geom_polygon(colour="grey40") +

     scale_fill_gradient(low="white",high="steelblue") +

     coord_map("polyconic") +

     theme(              

          panel.grid = element_blank(),

          panel.background = element_blank(),

          axis.text = element_blank(),

          axis.ticks = element_blank(),

          axis.title = element_blank()

          ) #【无标签】


以上代码与前一篇所讲到的代码几乎一样,只是具体数据不一样。



midpos <- function(x) mean(range(x,na.rm=TRUE))

centres <- ddply(anhui_data,.(city),colwise(midpos,.(long,lat)))


ggplot(anhui_data,aes(long,lat)) +               

     geom_polygon(aes(group=group,fill=zhibiao),colour="black") +

     scale_fill_gradient(low="white",high="steelblue") +

     geom_text(aes(label=city),data=centres) +

     theme(               

          panel.grid = element_blank(),

          panel.background = element_blank(),

          axis.text = element_blank(),

          axis.ticks = element_blank(),

          axis.title = element_blank()

          )#【带标签】


以上代码可以输出结果带有市级行政名称的带标签数据地图来。




当然,其实我们只需要修改以上所有代码的引用文件名称,可以跑出来任意一个省份的市级热力地图。


(前提是,你已经定义好每一个省份的指标数据)



事实上,我已经搜集整理了全国27个省级行政单位的热力地图代码(TXT)和数据文件(主要是指标文件需要自己定义,而且所有省份的指标文件已经在昨天分享的数据文件夹里了,地图数据文件都是引用的同一个数据源)。




如果你能够获取这些代码文件,你只需要用excel打开对应省份.CSV文件,替换,继续存为.CSV就可以直接跑我给你的代码了,直接出图(最好与我代码里给的路径一致)


代码文件会分享在魔方学院QQ群里。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存