Construire un graphique par couches
Maintenant que vous en savez un peu plus sur tmap(), reprenons votre graphique précédent sur la population en l'assemblant par couches et en y apportant quelques ajustements pour l'améliorer. Vous commencez par une couche tm_shape() qui précise les données à utiliser, puis vous ajoutez une couche tm_fill() pour colorer vos polygones à l'aide de la variable population :
tm_shape(countries_spdf) +
tm_fill(col = "population")
Le principal problème du graphique obtenu est que l'échelle de couleurs n'est pas très parlante : la première couleur (un jaune très pâle) regroupe tous les pays dont la population est inférieure à 200 millions ! Comme l'échelle de couleurs est liée à la couche tm_fill(), les ajustements de cette échelle se font dans cet appel. Vous en apprendrez beaucoup plus sur la couleur au chapitre 3, mais pour l'instant, sachez que l'argument style contrôle la façon dont les seuils sont choisis.
Votre graphique a aussi besoin de contours de pays. Vous pouvez ajouter une couche tm_borders() pour cela, mais évitons de les rendre trop dominants visuellement. Un brun pourrait bien convenir.
L'avantage d'utiliser des objets spatiaux devient vraiment évident lorsque vous changez le type de graphique. Essayons aussi un nuage de bulles où la taille des bulles correspond à la population. Avec ggplot2, cela exigerait beaucoup de remodelage de vos données. Avec tmap, il suffit de remplacer une couche.
Cette activité fait partie du cours
Visualiser des données géospatiales avec R
Instructions de l’exercice
- Ajoutez
style = "quantile"àtm_fill(). Cela choisit les seuils de l'échelle de couleurs en fonction d'un nombre égal d'observations dans chaque intervalle. - Au même graphique, ajoutez une couche
tm_borders()aveccol = "burlywood4". - Créez un nouveau graphique identique au premier, mais au lieu de
tm_fill(), ajoutez une couchetm_bubbles()avecsizeassocié à la population.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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()