Construire un graphique par couches
Maintenant que vous en savez un peu plus sur tmap(), construisons votre précédent graphique de la population par couches et apportons quelques ajustements pour l’améliorer. Vous commencez par une couche tm_shape() qui définit 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 sans doute que l’échelle de couleurs n’est pas très parlante : la première couleur (jaune très pâle) regroupe tous les pays de moins de 200 millions d’habitants ! Comme l’échelle de couleurs est associé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 manière dont les classes sont choisies.
Votre carte a également besoin de contours de pays. Vous pouvez ajouter une couche tm_borders() pour cela, mais évitons qu’ils ne soient trop marqués visuellement. Un brun pourrait convenir.
L’intérêt d’utiliser des objets spatiaux apparaît clairement lorsque vous changez le type de graphique. Essayons aussi un graphique à bulles où la taille des bulles correspond à la population. Avec ggplot2, cela exigerait beaucoup de remaniement des données. Avec tmap, il suffit de remplacer une couche.
Cet exercice fait partie du cours
Visualiser des données géospatiales avec R
Instructions
- Ajoutez
style = "quantile"àtm_fill(). Cela choisit les classes de l’échelle de couleurs en se basant sur un nombre égal d’observations dans chaque intervalle. - Sur le 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()avecsizemappé à la population.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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()