15

我有一个 shapefile,我使用geom_polygon. 如何仅绘制此地图的一小部分区域?

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

这是一个工作示例:这个小 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")

全图

#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))

在此处输入图像描述

谢谢。

4

1 回答 1

29

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

如果要通过设置坐标范围来​​放大xlim绘图,请使用函数的和ylim参数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))

在此处输入图像描述

于 2013-08-19T23:14:36.377 回答