GGMap + GGPlot
Wiemy już jak pobrać fragment podkładu z Google Maps. Dzisiaj zaprezentujemy na pobranej mapie nasze dane z użyciem biblioteki ggplot2. Wczytajmy potrzebne biblioteki:
1 2 3 |
library(rgdal) library(ggplot2) library(ggmap) |
W naszym poście wykorzystano linie kolejowe, których używaliśmy już wielokrotnie wcześniej. Wczytajmy warstwę:
1 |
kolej <- readOGR("D:/","kolej",stringsAsFactors = F) |
Do wyświetlenia warstwy wektorowej w ggplot konieczne jest jej przetransformowanie do data frame z użyciem funkcji fortify:
1 |
kolej_df <- fortify(kolej) |
Do zmiennej map zapisujemy mapę, którą chcemy wyświetlić:
1 |
map <- ggplot(kolej_df, aes(x=long,y= lat,group=group)) + geom_path(color = 'red',size=2) + ggtitle("Nasza mapa") |
Poszczególne elementy map to:
ggplot() – inicjalizuje obiekt, deklarujemy w nim dane wejściowe (kolej_df) oraz współrzędne i zmienną grupującą aes()
geom_path() – sposób wyświetlania danych jako linie zgodnie z ich zapisem w tabeli wejściowej. Definiujemy tu jeszcze kolor i wielkość linii.
ggtitle() – nazwa tabeli
Wyświetlamy wynik:
1 |
print(map) |
Dodajmy teraz podkład ggmap do naszych kolei. Najpierw musimy przetransformować warstwę wektorową do układu geograficznego:
1 |
kolej_geog = spTransform(kolej,"+init=EPSG:4326") |
Pobieramy fragment mapy satelitarnej Google dla warstwy wektorowej:
1 |
sat_map <- get_map(location = kolej_geog@bbox, maptype = 'satellite') |
Wyświetlamy podkład:
1 |
ggmap(sat_map) |
Transformujemy warstwę do data frame:
1 |
kolej_df <- fortify(kolej_geog) |
Zapisujemy mapę w inny sposób niż wcześniej. Podkładem jest sat_map na którą nakładamy geom_path()
1 |
map <- ggmap(sat_map) + geom_path(data = kolej_df, aes(x=long,y=lat,group=group),color = 'red',size=2) |
Wyświetlamy wynik:
1 |
print(map) |
Ggplot to bardzo bogata bibliotek do wizualizacji różnego typu danych. Każdy znajdzie w niej coś dla siebie. W tym poście pokazaliśmy jak w prosty sposób wykorzystać ją do wizualizacji warstw shp na podkładach Google Maps, ale na pewno w przyszłości pokażemy Wam w jaki sposób można wykorzystać inne funkcje tej biblioteki.