Costruire un grafico a livelli
Ora che conosci un po' meglio tmap(), costruiamo il tuo grafico precedente sulla popolazione a strati e facciamo qualche ritocco per migliorarlo. Parti da un livello tm_shape() che definisce i dati da usare, poi aggiungi un livello tm_fill() per colorare i poligoni usando la variabile population:
tm_shape(countries_spdf) +
tm_fill(col = "population")
Probabilmente il problema più grande del grafico risultante è che la scala dei colori non è molto informativa: il primo colore (giallo molto chiaro) copre tutti i paesi con popolazione inferiore a 200 milioni! Poiché la scala dei colori è associata al livello tm_fill(), le modifiche a questa scala si fanno in quella chiamata. Imparerai molto di più sul colore nel Capitolo 3, ma per ora sappi che l'argomento style controlla come vengono scelte le soglie.
Al tuo grafico servono anche i contorni dei paesi. Puoi aggiungere un livello tm_borders() per questo, ma non rendiamoli troppo marcati visivamente. Un marrone potrebbe essere piacevole.
Il vantaggio di usare oggetti spaziali diventa davvero chiaro quando cambi il tipo di grafico. Proviamo anche un bubble plot in cui la dimensione delle bolle corrisponde alla popolazione. Se stessi usando ggplot2, ciò richiederebbe molta ristrutturazione dei dati. Con tmap, ti basta sostituire un livello.
Questo esercizio fa parte del corso
Visualizzare dati geospaziali in R
Istruzioni dell'esercizio
- Aggiungi
style = "quantile"atm_fill(). Questo sceglie le soglie della scala dei colori in base a un numero uguale di osservazioni in ogni intervallo. - Allo stesso grafico, aggiungi un livello
tm_borders()concol = "burlywood4". - Crea un nuovo grafico uguale al primo, ma invece di
tm_fill()aggiungi un livellotm_bubbles()consizemappato alla popolazione.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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()