2013-05-23 7 views
5

Ich versuche, eine einfache Rasterkarte der ganzen Welt zu erhalten, mit der ggmap Paket/get_map-Funktionalität (siehe Code unten) in Kombination mit ggplot2. Die Zoomstufen gehen nur in Richtung „3“ und erlauben nicht weiter AuszoomenVerwenden von ggmap Karte der Welt

es unmöglich scheint, eine Weltkarte zu erhalten (wie in der ggmap Beschreibung dokumentiert. ("maps of the whole world currently not supported") Vielleicht wegen eines Mangels an Verständnis, warum diese ist nicht möglich/unterstützt, gibt es eine Workaround/alternative Lösung, um eine Weltkarte anzuzeigen?

EDIT/UPDATE auf FRAGE: Ich habe versucht, die Weltkarte wie vorgeschlagen zu verwenden - aber aus irgendeinem Grund ich don verstehe nicht, warum es mir nicht erlaubt, Punkte in der Grafik zu zeichnen (was das ursprüngliche Ziel war und in ggmap funktioniert) - ich fühle, dass ich etwas Dummes mache/einen Grundfehler mache Ich erhalte die Fehlermeldung "Error in eval(expr, envir, enclos) : object 'group' not found"

EDIT - leider bekomme ich eine Fehlermeldung mit OpenStreetMap (Java-Fehler. Arbeiten an der Befestigung dieses - aber nicht OpenStreetMap Lösungen wäre toll ...)

Zusammenfassend - die ggmap Ansatz arbeitet mit geom_point, aber ich kann nicht eine ganze Weltkarte bekommen. die worldmap Ansatz sollte funktionieren, aber aus irgendeinem Grund nicht Punkte .....

NEW CODE pro unten plotten erhalten:

ggmap Ansatz:

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 Ansatz:

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

Check this out: http://stackoverflow.com/questions/16028659/plots-on-a-map-using-ggplot2/16054062#16054062 – JT85

+0

sein Dezember 2016. Nun ist der minimale Zoomfaktor Zoom = 2, dies gibt Ihnen die östliche/westliche Hemisphäre des Globus. – knb

Antwort

3

Sie können das OpenStreetMap-Paket ausprobieren, das Zugriff auf viele verschiedene Kartenserver hat, jedoch nicht auf Google Maps.

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 implementiert auch die OpenStreetMap-Funktionalität, warum kann das nicht in ggmap allein gemacht werden? Außerdem ist die Auflösung der Karte mit Ihrem Beispielcode ziemlich schlecht. Ich nehme an, dass es eine Möglichkeit gibt, das zu verbessern. – maj

+2

Sie können den Zoom für eine höhere Auflösung vergrößern. Das Paket wird die relevanten Fliesen zusammennähen. aber es gibt zwei zusätzliche Probleme hier. Der erste besteht darin, dass der Text so entworfen wurde, dass er in Mercator-Koordinaten, nicht in Long-Lat, betrachtet werden kann. Dies ist der Grund, warum OpenStreetMap nicht standardmäßig in Long-Lat umgewandelt wird. Die zweite ist die Art und Weise, wie ggplot2 (d. H. Raster) Raster rendert. Aus irgendeinem Grund scheint es nicht so gut wie die Basis zu sein. Sehen Sie den Unterschied zwischen Plot (Karte) und Autoplot (Karte). –