Przykład zmiennej jakościowej
Na koniec przyjrzyjmy się przykładowi zmiennej kategorycznej. Raster land_cover zawiera siatkową klasyfikację powierzchni Ziemi. Wyświetl land_cover, wpisując:
land_cover
Zauważysz, że values są numeryczne, ale attributes przypisują tym liczbom kategorie (podobnie jak w przypadku czynników w R).
Dobór kolorów dla zmiennych kategorycznych zależy w dużej mierze od celu wizualizacji. Gdy chcesz, aby kategorie miały mniej więcej równy ciężar wizualny – tzn. żadna nie wyróżniała się bardziej od pozostałych – jednym z podejść jest użycie kolorów o różnych odcieniach, ale jednakowej chrominancji (miarze nasycenia) i jasności (to domyślne zachowanie dyskretnych skal kolorów w ggplot2, które można uzyskać funkcją hcl()).
Jakościowe palety RColorBrewer łączą równy ciężar wizualny kolorów z łatwością ich rozróżniania. Schematy "paired" i "accent" odbiegają od tej zasady: pierwszy oferuje pary kolorów o różnej jasności, drugi zawiera kilka intensywniejszych barw, które można wykorzystać do wyróżnienia wybranych kategorii.
W przypadku tych konkretnych danych sensowniejszym wyborem mogą być kolory intuicyjne – np. zielony dla lasów i niebieski dla wód. Niezależnie od podejścia, zmiana kolorów sprowadza się do przekazania wektora kolorów przez argument palette w odpowiedniej warstwie tm_***.
To ćwiczenie jest częścią kursu
Wizualizacja danych geoprzestrzennych w R
Instrukcje do ćwiczenia
- Wyświetl raster
land_cover, łącząctm_shape()ztm_raster(). Domyślnietmapużywa jakościowej paletyRColorBrewer"Set3". - Przeanalizuj kod tworzący
hcl_cols, który odwzorowuje paletę stosowaną przezggplot2. Następnie ponownie narysuj rasterland_cover, przekazująchcl_colsdo argumentupalettewtm_raster(). - Wywołaj
levels()naland_cover, aby zobaczyć dostępne kategorie. - Tym razem użyj
intuitive_colsjako palety i dodaj warstwętm_legend()z argumentemposition = c("left", "bottom").
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
library(raster)
# Plot land_cover
# Palette like the ggplot2 default
hcl_cols <- hcl(h = seq(15, 375, length = 9),
c = 100, l = 65)[-9]
# Use hcl_cols as the palette
# Examine levels of land_cover
# A set of intuitive colors
intuitive_cols <- c(
"darkgreen",
"darkolivegreen4",
"goldenrod2",
"seagreen",
"wheat",
"slategrey",
"white",
"lightskyblue1"
)
# Use intuitive_cols as palette