需要准备的数据
- 绘图之前需要准备加载的三个包,没有安装的同学可以先安装:
library(maps)
library(mapdata)
library(maptools)
- 需要准备的数据
数据中包含3个文件bou2_4p.dbf,bou2_4p.shp和bou2_4p.shx,把它们都放在chinamapdata文件夹中。
以下是下载地址:下载链接
好了,上面都准备好了就可以开始了。
读取数据&了解数据
加载中国行政区地图
map<-readShapePoly('chinamapdata/bou2_4p.shp')
先画个图看看
Paste_Image.pngplot(map)
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我们来看看黑龙江:
Paste_Image.pngplot(map[1,])
对,就是第一行画出来就是黑龙江
按照这个原理,其实可以单独画出每个省的地图。
所以中国地图和各省市地图基本上都可以通过maptools搞定。关键是要有数据。
接下来会在系列文章中用ggplot2绘图系统结合中国地图做一些可视化的东西。
网友评论