我有一个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")
#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))
感谢。
答案 0 :(得分:23)
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))