Un esempio qualitativo
Per finire, vediamo un esempio con una variabile categorica. Il raster land_cover contiene una categorizzazione grigliata della superficie terrestre. Dai un'occhiata a land_cover stampandolo:
land_cover
Noterai che i values sono numerici, ma ci sono attributes che associano questi numeri a categorie (proprio come funziona con i fattori).
La scelta dei colori per variabili categoriche dipende molto dallo scopo del grafico. Quando vuoi che le categorie abbiano all'incirca lo stesso peso visivo — cioè non vuoi che una categoria risalti più delle altre — un approccio è usare colori con tonalità diverse, ma stessa croma (una misura della vivacità) e luminosità (impostazione predefinita per le scale di colori discrete in ggplot2, generabili con la funzione hcl()).
Le tavolozze qualitative di RColorBrewer bilanciano colori di pari peso visivo con la facilità di distinguere i colori. Gli schemi "paired" e "accent" si discostano da questo fornendo rispettivamente coppie di colori con diversa luminosità e una tavolozza con alcuni colori più intensi per mettere in evidenza certe categorie.
Per questi dati, potrebbe avere più senso scegliere colori intuitivi, come il verde per le foreste e il blu per l'acqua. In ogni caso, impostare nuovi colori è semplicemente una questione di passare un vettore di colori tramite l'argomento palette nel corrispondente layer tm_***.
Questo esercizio fa parte del corso
Visualizzare dati geospaziali in R
Istruzioni dell'esercizio
- Traccia il raster
land_covercombinandotm_shape()etm_raster(). Per impostazione predefinitatmapusa la tavolozza qualitativa"Set3"diRColorBrewer. - Esamina il codice per
hcl_cols, che imita la tavolozza usata daggplot2. Poi traccia di nuovo il rasterland_cover, passandohcl_colsall'argomentopaletteditm_raster(). - Chiama
levels()suland_coverper vedere le categorie. - Questa volta, usa
intuitive_colscome tavolozza e aggiungi un layertm_legend()con l'argomentoposition = c("left", "bottom").
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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