2013-08-19 15 views
7

Mam plik kształtu, który wzmocniłem i wykreślono w ggplot2 przy użyciu geom_polygon. Jak mogę wykreślić tylko mały region tej mapy?wykreślić mały region dużej mapy wielokąta w ggplot2

Moja pełna mapa wygląda dobrze, ale mój mały region jest pomieszany.

Oto przykład roboczych: Ten niewielki shapefile można uzyskać pod adresem:

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

Dzięki.

+1

Chodź. Jakie pakiety są używane. Proszę? –

+0

Och, przepraszam. Zapomniałem zadeklarować biblioteki. 'require (rgdal)' 'require (ggplot2)' – rmf

Odpowiedz

13

Argument limits w ustawieniachi scale_y... określa ograniczenia skali. Wszelkie wartości spoza tych limitów nie są rysowane (dane podstawowe są pomijane). Obejmuje to elementy (takie jak wielokąt), które mogą być tylko częściowo poza tymi limitami.

Jeśli chcesz zoom Działka w ustawiając limity na współrzędnych, a następnie użyj xlim i ylim argumentów do coord_.... funkcję, z ?coord_cartesian

granicach ustawienie na układzie współrzędnych będzie powiększyć fabuła (jak na to patrzysz przy pomocy szkła powiększającego) i nie zmieni podstawowych danych, takich jak ustawienie limitów na skali.

W twoim przypadku masz map, i można użyć coord_map, która będzie rzutować swoje dane za pomocą odwzorowania.

np

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

Dodatkowym komentarzem jest to, że 'coord_map' wymaga współrzędnych jako długości-szerokości geograficznej lub wymaga określonej projekcji. W przypadku współrzędnych UTM lepiej jest użyć 'coord_cartesian'. – rmf

Powiązane problemy