Comment Créer une Carte avec GGPlot2



Comment Créer une Carte avec GGPlot2

Cet article fournit de nombreux exemples pour la création d’une carte avec ggplot. Vous apprendrez également comment créer une carte choroplèthe, dans laquelle les zones sont structurées proportionnellement aux valeurs d’une variables donnée affichée sur la carte, telles que l’espérance de vie ou la densité de population.



Sommaire:

Livre Apparenté

GGPLOT2 - L’Essentiel pour une Visualisation Magnifique des Données dans R

Prérequis

Fonctions et packages R clés:

  • map_data() [dans ggplot2] pour récupérer les données cartographiques. Nécessite le package maps.
  • geom_polygon() [dans ggplot2] pour créer la carte

Nous utiliserons le package viridis pour définir la palette de couleurs de la carte choroplèthe.

Charger les packages requis et définir le thème par défaut:

library(ggplot2)
library(dplyr)
require(maps)
require(viridis)
theme_set(
  theme_void()
  )

Créer une carte simple

Carte du monde

Récupérer les données de la carte du monde:

world_map <- map_data("world")
ggplot(world_map, aes(x = long, y = lat, group = group)) +
  geom_polygon(fill="lightgray", colour = "white")

Carte des régions spécifiques

  1. Récupérer des données cartographiques pour une ou plusieurs régions spécifiques:
# Quelques pays de l'UE
some.eu.countries <- c(
  "Portugal", "Spain", "France", "Switzerland", "Germany",
  "Austria", "Belgium", "UK", "Netherlands",
  "Denmark", "Poland", "Italy", 
  "Croatia", "Slovenia", "Hungary", "Slovakia",
  "Czech republic"
)
# Récupérer les données cartographiques
some.eu.maps <- map_data("world", region = some.eu.countries)

# Calculer le centroïde comme étant la longitude et la lattitude moyennes
# Utilisé comme coordonnée pour les noms de pays
region.lab.data <- some.eu.maps %>%
  group_by(region) %>%
  summarise(long = mean(long), lat = mean(lat))
  1. Visualiser
ggplot(some.eu.maps, aes(x = long, y = lat)) +
  geom_polygon(aes( group = group, fill = region))+
  geom_text(aes(label = region), data = region.lab.data,  size = 3, hjust = 0.5)+
  scale_fill_viridis_d()+
  theme_void()+
  theme(legend.position = "none")

Faire une carte choroplèthe

Carte du monde colorée par l’espérance de vie

Ici, nous allons créer une carte du monde colorée en fonction de la valeur de l’espérance de vie à la naissance en 2015. Les données sont extraites de la base de données de l’OMS (Organisation mondiale de la santé) à l’aide du [package R WHO] (https://cran.r-project.org/web/packages/WHO/vignettes/who_vignette.html).

  1. Récupérer les données sur l’espérance de vie et préparer les données:
life.exp <- readr::read_tsv("data/life.expectancy.who2015.txt")
  1. Fusionner la carte et les données sur l’espérance de vie:
world_map <- map_data("world")
life.exp.map <- left_join(life.exp, world_map, by = "region")
  1. Créer la carte choroplèthe. Notez qu’il manque des données pour certaines régions sur la carte ci-dessous:
  • Utilisez la fonction geom_polygon():
ggplot(life.exp.map, aes(long, lat, group = group))+
  geom_polygon(aes(fill = lifeExp ), color = "white")+
  scale_fill_viridis_c(option = "C")

  • Ou utilisez la fonction geom_map():
ggplot(life.exp.map, aes(map_id = region, fill = lifeExp))+
  geom_map(map = life.exp.map,  color = "white")+
  expand_limits(x = life.exp.map$long, y = life.exp.map$lat)+
  scale_fill_viridis_c(option = "C")

Carte des États-Unis colorée par les taux de crimes violents

Jeu de données de démonstration : USArrests (Taux de crimes violents par État américain, en 1973).

# Préparer les données USArrests
library(dplyr)
arrests <- USArrests 
arrests$region <- tolower(rownames(USArrests))
head(arrests)
##            Murder Assault UrbanPop Rape     region
## Alabama      13.2     236       58 21.2    alabama
## Alaska       10.0     263       48 44.5     alaska
## Arizona       8.1     294       80 31.0    arizona
## Arkansas      8.8     190       50 19.5   arkansas
## California    9.0     276       91 40.6 california
## Colorado      7.9     204       78 38.7   colorado
# Récupérer les données cartographiques des états et les fusionner avec les données sur la criminalité
states_map <- map_data("state")
arrests_map <- left_join(states_map, arrests, by = "region")

# Créer la carte
ggplot(arrests_map, aes(long, lat, group = group))+
  geom_polygon(aes(fill = Assault), color = "white")+
  scale_fill_viridis_c(option = "C")



Version: English





No Comments

Give a comment

Want to post an issue with R? If yes, please make sure you have read this: How to Include Reproducible R Script Examples in Datanovia Comments