2015-01-13 22 views
6

Chciałbym stworzyć mapę, która nie jest idealnie kwadratowa, ale prostokątna i jest to wielkość, którą dyktuję.ggmap zmiana rozmiaru mapy

require(ggmap) 
tenmile <- get_map(location = c(lon = -122.486328, lat = 48.862813), 
    color = "color", 
    source = "google", 
    maptype = "roadmap", 
    zoom = 12) 
tenmile.map <- ggmap(tenmile, 
    extent = "device", 
    ylab = "Latitude", 
    xlab = "Longitude")+ggtitle("GEOMean for Data from Oct 2013-Nov 2014") 
tenmile.map + geom_point(data=pp, aes(x=lon, y=lat, size=geomean), color="red", alpha=0.5) +  
geom_text(data=pp, aes(x=lon, y=lat, label = site), size=3, vjust = 1.25, hjust = -0.1) 

chciałbym dodawać zdjęcia tego, co mam i co chcę, ale nie mam wystarczająco dużo punktów reputacji do publikowania zdjęć. = - (

+0

Wygląda na to, że ggmap nie robi [map nieokreślonych kwadratów] (http://stackoverflow.com/questions/19438316/r-ggmap-why-can-i-create- rectangular-maps-using-the- filename-attribute-but-not), ale może możesz uzyskać większą mapę, [przyciąć obraz] (http://www.image.ucar.edu/~nychka/Fields/Help/image2lz.html) i [użyj to jako tło] (http://stackoverflow.com/questions/12918367/in-r-how-to-plot-with-a-png-as-background). Zgaduję, że będzie to bolesne wyrównać współrzędne, [być może tutaj] (https://github.com/hadley/ggplot2/wiki/Crime-in-Downtown-Houston--Texas-%3a-Combining-ggplot2 i Mapy Google). – andybega

Odpowiedz

2

Jeśli chcesz zachować oryginalne ograniczenia obwiedni, ale po prostu zmienić jej kształt, możesz dostosować proporcje.Jeśli chcesz zmienić ograniczenia obwiedni, uzyskaj mapę jako zanim jednak ustawić swoje granice za pomocą coord_fixed() (lub coord_cartesian()). albo można regulować zarówno proporcje i granice obwiedni.

tenmile <- get_map(location = c(lon = -122.486328, lat = 48.862813), 
    color = "color", 
    source = "google", 
    maptype = "roadmap", 
    zoom = 12) 
tenmile.map <- ggmap(tenmile, 
    ylab = "Latitude", 
    xlab = "Longitude")+ggtitle("GEOMean for Data from Oct 2013-Nov 2014") + 
    coord_fixed(xlim = c(-122.55, -122.40), ratio = 2/1) 
+0

Dzięki za kodeks Sandy, ale nie mogę go uruchomić. –

+0

Przepraszamy, brakowało Twojego komentarza. Musisz wyjaśnić, jak możesz wyglądać mapa. Dostaję mapę, która nie jest kwadratowa. –

0

odpowiedź Sandy Muspratt produkuje prostokątny mapę, ale robi się przeciągnął. Aby uzyskać mapa nie rozciągnięta, stosunek musi być dostosowany do stosunku między odstępami równoległymi a meridianami w miejscu mapy, to jest:

stosunek = 1/cos (szerokość)

Jeśli szerokości podana jest w stopniach, które przybiera postać:

stosunek = 1/cos (pi */szerokość 180)

Podam tutaj przykład na mapie Barcelony (Barcelona jest dobrym przykładem, aby sprawdzić rozciąganie, ponieważ większość naszych ulic tworzy kwadratową siatkę, a deformacja staje się łatwo zauważalna).

library(ggmap) library(mapproj) mapbcn <- get_map(location = 
    'Barcelona, Catalonia', zoom = 13) 

# square map (default) ggmap(mapbcn) 

# map cropped by latitude 
ggmap(mapbcn) +     
    coord_fixed(ylim=c(41.36,41.41), 
       ratio=1/cos(pi*41.39/180)) 

# map cropped by longitude 
ggmap(mapbcn) +  
    coord_fixed(xlim=c(2.14, 2.18), 
       ratio=1/cos(pi*41.39/180)) 

Należy zauważyć, że w ten sposób współrzędne nadal pracować dla całej mapy (na przykład dodanie punktów na mapie) jeśli obszar mapy jest na tyle mała, że ​​nie uwzględniające krzywizny Ziemi - czyli , aby założyć, że południki są równoległe w obszarze pokazanym na mapie. Może to być niedokładne na mapie obejmującej setki kilometrów i bardzo źle na mapie w skali kontynentu.