美文网首页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