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()
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
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
Supprimer le quadrillage en arrière plan.
p = p + theme_void()
p
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;')))
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()
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
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
Supprimer le quadrillage en arrière plan.
p = p + theme_void()
p
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;')))