2013-05-23 14 views
5

Próbuję uzyskać prostą mapę rastrową całego świata, używając funkcji package/get_map ggmap (zobacz poniższy kod) w połączeniu z ggplot2. Poziomy powiększenia tylko iść w kierunku „3”, i nie pozwalają na dalsze powiększanie sięUżywanie mapy ggmap świata

wydaje się niemożliwe, aby dostać mapę świata (co zostało udokumentowane w opisie ggmap. ("maps of the whole world currently not supported") Być może ze względu na brak zrozumienia, dlaczego to nie jest możliwe/obsługiwane, czy istnieje rozwiązanie zastępcze/alternatywne do widoku mapy świata?

EDYCJA/AKTUALIZACJA o PYTANIE: Próbowałem użyć mapy świata zgodnie z sugestią - ale z jakiegoś powodu nie rozumiem, dlaczego nie pozwala mi na wykreślanie punktów na wykresie (co było oryginalnym celem i działa w ggmap) - czuję, że robię coś głupiego/robiąc podstawowy błąd. Otrzymuję komunikat o błędzie "Error in eval(expr, envir, enclos) : object 'group' not found"

EDIT - niestety otrzymuję komunikat o błędzie za pomocą OpenStreetMap (błąd java. praca nad naprawianiem tego - ale inne rozwiązania OpenStreetMap byłoby świetnie ...)

Podsumowując - podejście ggmap działa z geom_point, ale nie mogę uzyskać mapy całego świata. podejście worldmap powinny działać, ale z jakiegoś powodu nie może uzyskać punkty do działki .....

nowy kod za poniżej:

ggmap podejście:

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 podejście:

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

zajrzyj na http://stackoverflow.com/questions/16028659/plots-on-a-map-using-ggplot2/16054062#16054062 – JT85

+0

jego grudnia 2016. Teraz minimalny współczynnik zoom zoom = 2, to daje półkuli wschodniej/zachodniej świata. – knb

Odpowiedz

3

Możesz wypróbować pakiet OpenStreetMap, który ma dostęp do wielu różnych serwerów mapowych, ale nie 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 również implementuje funkcjonalność OpenStreetMap, więc dlaczego nie można tego zrobić w samym ggmap? Poza tym, używając przykładowego kodu, rozdzielczość mapy jest dość zła, zakładam, że jest sposób na ulepszenie tego? – maj

+2

Możesz zwiększyć powiększenie, aby uzyskać wyższą rozdzielczość. Pakiet połączy odpowiednie płytki. ale są tu dwa dodatkowe problemy. Po pierwsze, tekst jest przeznaczony do oglądania we współrzędnych mercatora, a nie na długo. Z tego powodu OpenStreetMap domyślnie nie przekształca się na long-lat. Drugi to sposób, w jaki ggplot2 (to jest siatka) renderuje rastry. Z jakiegoś powodu nie wydaje się tak dobre jak baza. Zobacz różnicę między działką (mapa) i autoplotem (mapa). –

Powiązane problemy