美文网首页ggplot2与数据可视化R语言R语言
R地图系列(1):maptools包绘制中国地图

R地图系列(1):maptools包绘制中国地图

作者: 周书恒 | 来源:发表于2016-11-03 18:05 被阅读1244次

需要准备的数据

  • 绘图之前需要准备加载的三个包,没有安装的同学可以先安装:

library(maps)
library(mapdata)
library(maptools)

  • 需要准备的数据
    数据中包含3个文件bou2_4p.dbf,bou2_4p.shp和bou2_4p.shx,把它们都放在chinamapdata文件夹中。
    以下是下载地址:下载链接

好了,上面都准备好了就可以开始了。

读取数据&了解数据

加载中国行政区地图

map<-readShapePoly('chinamapdata/bou2_4p.shp')

先画个图看看

plot(map)

Paste_Image.png

ok,很神奇有没有,简短的一行代码,一张中国地图就出来了。
其实,真正复杂的是画图所要调用的数据map。

接下来我们来看看数据长啥样,需要说明的是本人对这个数据也没有了解透彻,本篇文章中介绍的只是目前自己理解的部分,如果有对此数据深入研究的同学,期待你的留言,只要有新的认识,我都会更新在文章中。

length(map)
[1] 925
names(map)
[1] "AREA" "PERIMETER" "BOU2_4M_" "BOU2_4M_ID" "ADCODE93" "ADCODE99" "NAME"

可以看出,map数据中包含了925条记录,每条记录中都含有

  • 面积(AREA)
  • 周长(PERIMETER)
  • 各种编号、
  • 中文名(NAME)等字段。
    其中中文名(NAME)字段是以GBK编码的。

利用iconv 格式转换函数来转换各省名称

table(iconv(map$NAME, from = "GBK"))

得出以下结果:


Paste_Image.png

可以看出,不同的省,数据中用的存储空间不一样,有的可能只用了一行纪录,有的可能用了几十行。

运行一下这个,,其实就可以知道每个省的数据具体存在哪一行

iconv(map$NAME, from = "GBK")

显示一部分运行结果,结果一共有925个

Paste_Image.png

我们来看看黑龙江:

plot(map[1,])

Paste_Image.png

对,就是第一行画出来就是黑龙江
按照这个原理,其实可以单独画出每个省的地图。

所以中国地图和各省市地图基本上都可以通过maptools搞定。关键是要有数据。

接下来会在系列文章中用ggplot2绘图系统结合中国地图做一些可视化的东西。

相关文章

网友评论

    本文标题:R地图系列(1):maptools包绘制中国地图

    本文链接:https://www.haomeiwen.com/subject/ptciuttx.html