2013-05-23 19 views
5

Sto cercando di ottenere una semplice mappa raster di tutto il mondo, utilizzando la funzionalità ggmap package/get_map (vedere il codice di seguito) in combinazione con ggplot2. I livelli di zoom solo andare verso il "3", e non consentono ulteriori zoom outUtilizzo della mappa ggmap del mondo

sembra impossibile ottenere una mappa del mondo (come documentato nella descrizione ggmap:. ("maps of the whole world currently not supported") Forse a causa di una mancanza di capire perché questo non è possibile/supportato, esiste una soluzione alternativa/alternativa per avere una mappa del mondo?

MODIFICA/AGGIORNAMENTO su DOMANDA: Ho provato ad usare la mappa del mondo come suggerito - ma per qualche ragione non capisco perché non mi permette di tracciare punti nel grafico (che era l'obiettivo originale e funziona in ggmap) - sento che sto facendo qualcosa di stupido/facendo un errore di base.Vengo messaggio di errore "Error in eval(expr, envir, enclos) : object 'group' not found"

EDIT- sfortunatamente ricevo un messaggio di errore usando OpenStreetMap (errore java. lavorando su come risolvere questo problema - ma le soluzioni non OpenStreetMap sarebbero grandiose ...)

Per riassumere: l'approccio ggmap funziona con geom_point, ma non riesco a ottenere una mappa del mondo intero. l'approccio worldmap dovrebbe funzionare, ma per qualche ragione non può ottenere punti per tracciare .....

NUOVO CODICE per di seguito:

ggmap approccio:

library(ggmap) 
library(ggplot2) 

reclat=c(50,20,30,40) 
reclong=c(30,40,30,50)   
points=as.data.frame(cbind(reclat,reclong)) 

al1 = get_map(location = 'Europe', zoom = 3, color="bw",maptype = "satellite") 
map = ggmap(al1) 
map 

#this works 
map+geom_point(data=points, aes(x=reclong, y=reclat, colour="red")) 

worldmap approccio:

world <- map_data("world") 
worldmap <- ggplot(world, aes(x=long, y=lat, group=group)) + 
    geom_path() + 
    scale_y_continuous(breaks=(-2:2) * 30) + 
    scale_x_continuous(breaks=(-4:4) * 45) 

#this works 
worldmap + geom_point(aes(50, 30, colour="red")) 

#this doesnt work 
worldmap + geom_point(data=points, aes(x=reclong, y=reclat, colour="red")) 
+0

controllo questo fuori: http://stackoverflow.com/questions/16028659/plots-on-a-map-using-ggplot2/16054062#16054062 – JT85

+0

sua dicembre 2016. Ora il fattore minimo di zoom è zoom = 2, questo ti dà l'emisfero orientale/occidentale del globo. – knb

risposta

3

Puoi provare il pacchetto OpenStreetMap, che ha accesso a molti diversi map server, anche se non a GoogleMaps.

library(OpenStreetMap) 
library(ggplot2) 
map <- openmap(c(70,-179), 
       c(-70,179),zoom=1) 
map <- openproj(map) 


reclat <- c(50,20,30,40) 
reclong <- c(30,40,30,50)   
autoplot(map) + geom_point(aes(x=reclong,y=reclat)) 
+0

ggmap implementa anche la funzionalità OpenStreetMap, quindi perché non è possibile farlo in ggmap da solo? Inoltre, usando il tuo codice di esempio, la risoluzione della mappa è piuttosto brutta, presumo che ci sia un modo per migliorarlo? – maj

+2

È possibile ingrandire lo zoom per una maggiore risoluzione. Il pacchetto cucirà insieme le tessere pertinenti. ma ci sono altri due problemi qui. Il primo è che il testo è progettato per essere visualizzato nelle coordinate di Mercator, non a lungo. Questo è il motivo per cui OpenStreetMap non viene trasformato in long-lat per impostazione predefinita. Il secondo è il modo in cui ggplot2 (cioè griglia) rende i raster. Per qualche motivo non sembra buono come base. Guarda la differenza tra trama (mappa) e autoplot (mappa). –

Problemi correlati