2017-04-02 56 views
2

我可以使用ggplot创建县地图。我想要使​​用这个地图数据,并且映射出各个县的聚合的新边界。例如,与我相同的任务是使用县地图数据集(我有另一个用于聚合县的变量)映射州边界(“区域”变量),而不是县边界。R - 聚合县地图多边形创建自定义边框

只需更改ggplot中的组对此不起作用。我相信我可能需要根据我用来聚合的变量创建新的多边形形状,但我不确定。有关我如何做到这一点的任何想法?任何帮助是极大的赞赏!

library(ggplot2) 

# load county map data 
m.county <- map_data("county") 
head(m.county) 
     long  lat group order region subregion 
1 -86.50517 32.34920  1  1 alabama autauga 
2 -86.53382 32.35493  1  2 alabama autauga 
3 -86.54527 32.36639  1  3 alabama autauga 
4 -86.55673 32.37785  1  4 alabama autauga 
5 -86.57966 32.38357  1  5 alabama autauga 
6 -86.59111 32.37785  1  6 alabama autauga 

# map county data with county borders 
ggplot(data = m.county) + 
    geom_polygon(aes(x=long, y=lat,group=group)) 
+0

这个[文章](HTTP看看://计算器.com/a/20475268/709777)或[this one](http://gis.stackexchange.com/q/131741/9227) – pacomet

回答

1

您可以使用gUnaryUnionlibrary(rgeos)合并的多边形,但是当你使用来自库maps地图,这需要几个步骤:

获得从地图图书馆,这是使用数据get_map

library(ggplot2) 
library(sp) 
library(rgdal) 
library(maps) 
library(mapdata) 

# adapted from 
# http://stackoverflow.com/questions/26062280/converting-a-map-object-to-a-spatialpolygon-object 
require(sp) 
require(maptools) 
county <- map("county", fill = TRUE) 

变换地图数据分成SpatialPolygonsDataFrame的library(sp)

根据使用 gUnaryUnion

因为从库maps地图是不是在拓扑结构方面的清洁区域周

合并的多边形,你需要使用一个缓冲的伎俩进行清洁。

library(rgeos) 
# Because of topology problems 
county.sp.data.buffer <- gBuffer(county.sp.data, byid = TRUE, width = 0) 
# Merge polygons according to region 
county.region <- gUnaryUnion(county.sp.data.buffer, 
          id = [email protected]$region) 

变换追溯到适合ggplot数据集

使用fortify能够绘制spatialdata与ggplot

county.fortify <- fortify(county.region) 

ggplot(data = county.fortify) + 
    geom_polygon(aes(x=long, y=lat, fill=group)) + 
    guides(fill = FALSE)