在ggplot2中绘制大型多边形地图的小区域

时间:2013-08-19 22:00:09

标签: r ggplot2 ggmap

我有一个shapefile,我使用geom_polygon强化并在ggplot2中绘制。如何仅绘制此地图的一小部分区域?

我的完整地图看起来不错,但我的小区域搞砸了。

这是一个工作示例: 这个小的shapefile可以从:

获得

http://www.mappinghacks.com/data/TM_WORLD_BORDERS_SIMPL-0.2.zip

#read data
spf<-readOGR(getwd(),"TM_WORLD_BORDERS_SIMPL-0.2")
spf@data$id<-rownames(spf@data)

#fortify
spf1<-fortify(spf,region="id")

#full plot
ggplot(spf1)+geom_polygon(aes(long,lat,group=group),colour="grey90")

fullplot

#subset plot #this is messy since polygons are broken
ggplot(spf1)+geom_polygon(aes(long,lat,group=group),colour="grey90")+
scale_x_continuous(limits = c(-2, 2))+
scale_y_continuous(limits = c(50, 51))

enter image description here

感谢。

1 个答案:

答案 0 :(得分:23)

limitsscale_x_...中的scale_y...参数设置了比例限制。不绘制超出这些限制的任何值(基础数据被删除)。这包括可能仅部分超出这些限制的元素(例如多边形)。

如果要通过设置坐标限制来缩放图表,请使用xlimylim参数加coord_....函数,来自?coord_cartesian

  

设置坐标系的限制将缩放绘图(就像你用放大镜看一样),并且不会像刻度上的设置限制那样改变基础数据。

在您的情况下,您有一个map,并且您可以使用coord_map,它将使用地图投影投影您的数据。

例如

ggplot(spf1, aes(x=long,y=lat,group=group)) + 
  geom_polygon(colour  = 'grey90') +
  coord_map(xlim = c(-2, 2),ylim = c(50, 51))

enter image description here