正在加载
请稍等

菜单

Home 码农菜园 前端视界 R数据可视化-3 地图
Home 码农菜园 前端视界 R数据可视化-3 地图

R数据可视化-3 地图

前端视界 by   阅读量 8,587

地图热图可以用来可视化地理数据的分布,R、echarts、d3等都可以实现地图热图,这里介绍一下如何在R中绘制地图。

1 shp文件

准备绘制地图所需的shp文件,毕竟不是徒手画,而是根据已有的地理信息进行绘制。以中国地图shp文件为例,一般是bouX_4Y.shp,其中bou表示boundary,X可以取1、2、3、4,分别代表国、省、市、县4级行政划分,4表示比例为400万分之一,Y可以取p或l,分别表示绘制区域的多边形数据和绘制边界的线形数据,这里提供一个压缩包,包括各个级别和类型的shp文件。

shpfiles

2 开始绘图

在绘制地图之前,需要安装并导入相应的包。

使用plot()绘制地图时,会将经度和纬度均等处理,画出来的地图比较扁平。因此需要将地图映射到地理坐标系上,可以使用ggplot2中的coord_map()进行绘制。

mydat中保存的是各个省/直辖市的多边形数据,通过以下代码可以发现mydat中有925条记录,每条记录包含面积AREA、周长PERIMETER、中文名NAME等7个字段。

不妨统计一下,各个省/直辖市所包含的多边形数量。可以看到,有部分的省/直辖市包含多个多边形,如福建省包含168个多边形,这主要是因为临海的省/直辖市会有很多附属岛屿。

ADCODE99是国家基础地理信息中心定义的区域代码,以下使用ADCODE99提取出上海及附属崇明岛的数据。

在使用ggplot2绘制地图时,通过fortify()将shp中提供的SpatialPolygonsDataFrame转化为data.frame,供ggplot2绘图函数使用。可以看到Shanghai转化为data.frame之后包含long、lat、order、hole、piece、id、group七列。

3 填充颜色

下面以长沙为例,展示如何对地图进行颜色填充,首先读取shp文件并筛选出长沙所对应的地图数据,即ADCODE99以4301开头的行,转化为data.frame并解决编码问题。

接下来给每个区域分配一个随机数值,用于填充颜色并显示到地图上。

然后再给各个区域加上文本,使用到了sp包中的coordinates(),计算各个区域的中心。

然后的显示是这样,看着很舒服。

地图热图

对于一个地名对应多个区域的情况,以下代码以上海为例进行颜色填充。

上海地图

4 参考

http://cos.name/2014/08/r-maps-for-china/

05 2016-07

发表评论