2013-08-19 17 views
7

Ho uno shapefile che ho fortificato e tracciato in ggplot2 usando geom_polygon. Come posso tracciare solo una piccola regione di questa mappa?trama piccola regione di una grande mappa poligonale in ggplot2

La mia mappa completa sembra soddisfacente, ma la mia piccola regione è incasinata.

Ecco un esempio di lavoro: Questo piccolo shapefile può essere ottenuta da:

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

Grazie.

+1

Andiamo. Quali pacchetti vengono utilizzati. per favore? –

+0

Oh scusa. Hai dimenticato di dichiarare le librerie. 'require (rgdal)' 'require (ggplot2)' – rmf

risposta

13

L'argomento limits in scale_x_... e scale_y... imposta i limiti della scala. Qualsiasi valore al di fuori di questi limiti non viene disegnato (i dati sottostanti vengono eliminati). Questo include elementi (come un poligono) che possono essere solo parzialmente al di fuori di questi limiti.

Se si vuole zoom la trama in impostando i limiti sulle coordinate, quindi utilizzare le xlim e ylim argomenti a una funzione di coord_...., Da ?coord_cartesian

limiti di impostazione del sistema di coordinate lo zoom la trama (come se la guardassi con una lente d'ingrandimento), e non cambierà i dati sottostanti come i limiti di impostazione su una scala.

Nel tuo caso hai una map, e si può usare coord_map, che proietterà i dati utilizzando una proiezione cartografica.

esempio

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

Un commento aggiuntivo è che, 'coord_map' necessita di coordinate come longitudine-latitudine o necessita di una proiezione specifica da specificare. Per le coordinate UTM, è meglio usare 'coord_cartesian'. – rmf

Problemi correlati