Se rendre au contenu

Utilisation des cartes

Objectif

Quelle est la meilleure façon de créer une carte en R ? Il existe une multitude de bibliothèques pour la création de cartes. Ici, je vais vous montrer ma préférée.

library(dplyr)
library(maps)
library(ggplot2)

Présentation

Voici un aperçu rapide d'une création de carte avec maps et ggplot2 en utilisant les données de populations de l'INSEE.

map_data('france') %>%
  left_join(read.csv('population.csv', header = TRUE, sep = ';'), by = c('region' = 'departement')) %>%
  ggplot(aes(x = long, y = lat, group = group, fill = population)) +
  geom_polygon(color = '#555555', linewidth = .5) +
  coord_map() +
  scale_fill_gradient(low = "white", high = '#00a67d', name = 'Population')+
  theme_void()
Carte de France

Expplications

Charger la "France"

Commençons par charger la France, c'est à dire récupérer la liste des départements et leur coordonnées. Pour cela nous aurons besoin de maps.

library(maps)

france = map_data('france')
head(france)

lignes = length(france$region)

On obtient une table de 13353 lignes.

Remarque : la colonne region fais référence au départements.

Ajoutons nos données

Ajoutons les données à analyser, ici la population. Pour effectuer la jointure nous utilisons dplyr.

library(dplyr)

population = read.csv('population.csv', header = TRUE, sep = ';')

data = left_join(france, population, by = c('region' = 'departement'))
head(data)

Graphiques

On peut alors commencer à afficher nos données avec ggplot.

library(ggplot2)

p = ggplot(data, aes(x = long, y = lat, group = group, fill = population)) +
  geom_polygon()
p
Carte France

Ce visuel nous permet de comprendre comment est dessiné la carte, mais plusieurs paramètres peuvent se régler. La carte semble "étiré", ajustons cela.

p = p + coord_map()
p
Carte de France

Supprimer le quadrillage en arrière plan.

p = p + theme_void()
p
Carte

Et voilà, la carte est correctement affichée. On peux personnaliser la map en :

  • ajoutant des démarcations entre les régions avec linewidth et color
  • ajoutant des titre et sous-titre
  • modifiant la légende
  • modifiant les couleurs de dégradé
  • ...

Interactivité

Pour aller plus loins, nous allons voir comment créer une carte interactive avec ggiraph.

library(ggiraph)

# Ajoutons le texte de l'info bulle dans le jeux de données
data = map_data('france') %>%
  left_join(read.csv('population.csv', header = TRUE, sep = ';'), by = c('region' = 'departement')) %>%
  mutate(label = paste(region, '\n', format(population, big.mark = " "), 'habitants'))

p = ggplot(data, aes(x = long, y = lat, group = group, fill = population)) +
  geom_polygon_interactive(
    colour = "#555555", size = .1, data_id = data$label, tooltip = data$label
  ) +
  scale_fill_gradient(low = "white", high = '#00a67d', name = 'Population')+
  coord_map() + theme_void()

girafe(code = print(p), options = list(opts_hover(css = 'fill:#00a070; cursor:pointer;')))