服务热线
178 0020 3020
R语言之ggplot2画地图
1.介绍地图的相关包:
1)地图基础包:maps, mapdata----基于两个包的数据较老,中国地图缺少重庆市,故本次作业不适用该包。
2)作业绘图包:maptools
maptools包提供了多个函数用来对R当中的空间对象进行读、写、转换或者其他的处理。用来读shapefile的通用函数是readShapeSpatial,这个函数可以自动识别shapefile(或其他R对象)中是否包含点、线或面,然后对特殊的类型采用专门的函数把数据读入。这些专门的函数包括readShapePoints,readShapeLines,readShapePoly等,用来分别读点、线、面。这样做的好处是当你搞错类型时,它会报错。和rgdal包的对应方法不同的是,maptools的函数并不读入投影信息,而是留给你手工处理(如果需要的话)。
library(maptools)
china_map<-readShapePoly("bou2_4p.shp")
plot(china_map, axes=TRUE, border="gray")
使用sp包看一下这个china_map的属性
> class(china_map)
[1] "SpatialPolygonsDataFrame"
attr(,"package")
[1] "sp"
2.GIS数据
Esri shapefile是一种常见的地图数据。Shapefile 文件是一种空间数据格式,该文件是美国环境系统研究所ESRI所研制的GIS系统格式文件,用来储存基于向量的地理数据(如点,线,面)。这次所用的数据即为GIS数据。
在绘制地图时,每一个省市自治区或者岛屿都是用一个多边形来表示的。 GIS 数据,其实就是提供了每一个行政区其多边形逐点的坐标,然后 R 软件通过顺次连接这些坐标,就绘制出了一个多边形区域。在上面的数据中,一共包含了 925 个多边形的信息,之所以有这么多是因为一些省份有很多小的附属岛屿。在这 925 个多边形中,每一个都对应一个唯一的 ID,编号分别从 1 到 925。
在参考的“数据小铺”中有提供数据来源,这里已下载,可直接使用。下载的是中国地图的GIS数据,这是一个压缩包,完全解压后包含三个文件(bou2_4p.dbf,bou2_4p.shp,bou2_4p.shx)。该数据绘中国地图包含重庆市。
library(maptools)
china_map<-readShapePoly("bou2_4p.shp")
china_map@data
china_map@data是个数据框,925行,7列。第1,2列为区域面积和周长,第7列为省的名字。
注:R和Rstudio的默认工作目录(工作空间)是“文档”或“documents”,直接将下载的包放这里,可直接在R中写代码,调用数据。如果下载到自己设定的工作目录,就需要在R和Rstudio中设定好以该文件存放的文件夹为工作目录。
3.绘图要求
1)熟悉geom_polygon()、geom_path()、fortify()这三个函数的用法,意义。
2)创建一个空白主题,并调用。可根据前期作业来设置。
3) 学会设置颜色。
任务1:根据提供的数据,来绘制自己所在省份的地图:
要求:使用空白主题,标题为“R2-代号-省份-城市”。颜色自选。
任务2:
将任务1中调用的地图数据与csv文件R2-9的数据合并,画出人口信息与行政区域结合图。可参考“数据小铺”的文章。
要求:调用空白主题,标题为“R2-代号”,调用表格中的数据,并且根据设置颜色(低为“白色”,高为“红色”),区域边框为绿色。
参考:
1.数据小站的网址:https://site.douban.com/182577/
2.R语言数据可视化手册1
3.中国各主要大城市的经纬度
http://www.360doc.com/content/15/0512/22/13253171_470036622.shtml
4.http://blog.csdn.net/wendaomudong_l2d4/article/details/71403538
写在后面:此次作业提供的链接中有相关的代码,可自行学习并熟悉相关代码,按要求作图。如果学有余力,可学习其他包作图,但不可替换其中任务图。综上,此次作业较为简单,只是地图绘图的入门,知乎专栏小魔方杜雨写了很多地图绘图的文章,感兴趣的同学可自行学习。完成地图绘图任务的小组的成员为:R2-03、R2-07、R2-40.
附件