Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Dodaj style = "quantile" do tm_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 argumentem col = "burlywood4".
  • Utwórz nowy wykres identyczny z pierwszym, ale zamiast tm_fill() dodaj warstwę tm_bubbles() z argumentem size odwzorowanym 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()
Edytuj i uruchom kod