Budowanie wykresu warstwami
Skoro wiesz już nieco więcej o tmap(), zbudujmy poprzedni wykres populacji warstwami i wprowadźmy kilka poprawek, które go ulepszą. Zaczynasz od warstwy tm_shape(), która określa dane, a następnie dodajesz warstwę tm_fill(), aby pokolorować wielokąty według zmiennej population:
tm_shape(countries_spdf) +
tm_fill(col = "population")
Największym problemem z otrzymanym wykresem jest to, że skala kolorów nie jest zbyt czytelna: pierwszy kolor (najbledszy żółty) obejmuje wszystkie kraje z populacją poniżej 200 milionów! Ponieważ skala kolorów jest powiązana z warstwą tm_fill(), wszelkie zmiany tej skali wprowadza się w tym wywołaniu. O kolorach dowiesz się znacznie więcej w rozdziale 3, ale na razie wiedz, że argument style kontroluje sposób doboru przedziałów.
Wykres potrzebuje też konturów krajów. Możesz dodać do tego warstwę tm_borders(), ale nie rób jej zbyt wyrazistej wizualnie. Brązowy kolor powinien być w sam raz.
Korzyść ze stosowania obiektów przestrzennych staje się naprawdę widoczna, gdy zmienisz rodzaj tworzonego wykresu. Spróbujmy też wykresu bąbelkowego, w którym rozmiar bąbelków odpowiada populacji. W ggplot2 wymagałoby to sporego przekształcania danych – w tmap wystarczy zamienić jedną warstwę.
To ćwiczenie jest częścią kursu
Wizualizacja danych geoprzestrzennych w R
Instrukcje do ćwiczenia
- Dodaj
style = "quantile"dotm_fill(). Dzięki temu przedziały skali kolorów są dobierane tak, by w każdym z nich znalazła się równa liczba obserwacji. - Do tego samego wykresu dodaj warstwę
tm_borders()z argumentemcol = "burlywood4". - Utwórz nowy wykres identyczny z pierwszym, ale zamiast
tm_fill()dodaj warstwętm_bubbles()z argumentemsizeodwzorowanym na populację.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
library(sp)
library(tmap)
# Add style argument to the tm_fill() call
tm_shape(countries_spdf) +
tm_fill(col = "population") +
# Add a tm_borders() layer
# New plot, with tm_bubbles() instead of tm_fill()