2013-08-19 75 views
7

我有一個shapefile,我使用geom_polygon在ggplot2中進行了加固和繪製。我怎麼能只繪製這張地圖的一個小區域?在ggplot2中繪製一個大型多邊形地圖的小區域

我的完整地圖看起來不錯,但我的小地區搞砸了。

這裏是一個工作示例: 這個小shape文件可以從獲得:

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

#read data 
spf<-readOGR(getwd(),"TM_WORLD_BORDERS_SIMPL-0.2") 
[email protected]$id<-rownames([email protected]) 

#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

哦,對不起。忘了宣佈圖書館。 'require(rgdal)' 'require(ggplot2)' – rmf

回答

13

scale_x_...scale_y...中的參數limits設置了比例限制。這些限制之外的任何值都不會被繪製(底層數據將被刪除)。這包括可能僅部分超出這些限制的元素(例如多邊形)。

如果你想變焦劇情中通過座標設定的極限,然後使用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

+2

另外一點需要注意的是,'coord_map'需要座標作爲經緯度,或者需要指定一個特定的投影。對於UTM座標,最好使用'coord_cartesian'。 – rmf

相關問題