2015-01-13 19 views
6

Vorrei creare una mappa che non sia perfettamente quadrata ma rettangolare e sia la dimensione che detta.ggmap che modifica la dimensione della mappa

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) 

vorrei postare foto di quello che ho e quello che voglio, ma non ho abbastanza punti reputazione per pubblicare le immagini. = - (

+0

Sembra che ggmap non [esegua mappe non quadrate] (http://stackoverflow.com/questions/19438316/r-ggmap-why-can-i-create-rectangular-maps-using-the- nomefile-attributo-ma-non), ma forse puoi ottenere una mappa più grande, [ritaglia l'immagine] (http://www.image.ucar.edu/~nychka/Fields/Help/image2lz.html) e [usa come sfondo] (http://stackoverflow.com/questions/12918367/in-r-how-to-plot-with-a-png-as-background). Immagino che sarà doloroso allineare le coordinate, [forse qui] (https://github.com/hadley/ggplot2/wiki/Crime-in-Downtown-Houston,-Texas-%3a-Combining-ggplot2 -e-Google-Maps). – andybega

risposta

2

Se si desidera mantenere i limiti originali del riquadro di delimitazione ma semplicemente per modificarne la forma, è possibile regolare il rapporto aspetto. Se si desidera modificare i limiti del riquadro di delimitazione, quindi ottenere la mappa come prima, ma impostare i limiti che utilizzano coord_fixed() (o coord_cartesian()). oppure si può regolare sia il rapporto di aspetto e i limiti del riquadro di delimitazione.

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

Grazie per il codice Sandy ma non riesco a farlo funzionare. –

+0

Siamo spiacenti, ho perso il tuo commento. Devi spiegare cosa ti aspetti che la mappa assomigli. Prendo una mappa che non è quadrata. –

0

risposta di Sandy Muspratt produce una mappa rettangolare, ma si ottiene allungato. Per ottenere una mappa non stirata, il rapporto deve essere adattato al rapporto tra la spaziatura dei paralleli e dei meridiani nel punto della mappa, ovvero:

rapporto = 1/cos (latitudine)

Se latitudine è dato in gradi, che diventa:

rapporto = 1/cos (pi * latitudine/180)

Diamo qui un esempio utilizzando una mappa di Barcellona (Barcellona è un buon esempio per verificare lo stretching perché la maggior parte delle nostre strade forma una griglia quadrata e la deformazione diventa facilmente evidente).

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)) 

Si deve notare che in questo modo le coordinate continuare a lavorare per tutta la mappa (ad esempio per aggiungere punti alla mappa) se l'area della mappa è abbastanza piccolo da non prendere in considerazione la curvatura della Terra - che è , per supporre che i meridiani siano paralleli nell'area indicata dalla mappa. Potrebbe essere impreciso in una mappa che si estende per alcune centinaia di chilometri e molto sbagliato in una mappa in scala continentale.

Problemi correlati