< Programmer en R

Le langage R permet de réaliser des cartes.

Réalisation d'une carte des départements français

Import des données

On peut télécharger les contours des départements français sur le site data.gouv.fr[1]. On peut importer les données au format Shapefile grâce à la fonction readOGR() de la librairie rgdal :

library(rgdal)
spdf_departement <- readOGR(
  "data/departements-20140306-100m-shp/", 
  layer= "departements-20140306-100m"
)

On obtient alors un SpatialPolygonDataFrame.

Visualisation avec la fonction de visualisation de base

Pour visualiser uniquement, les départements de la métropole, on peut sélectionner les départements dont le code Insee ne prend que deux caractères. On utilise la fonction str_length() de la librairie stringr. Pour clarifier le code, on utilise l'opérateur %>% de la librairie magrittr. Cet opérateur permet d'enchaîner les fonctions les unes à la suite des autres.

library(stringr)
library(magrittr)
spdf_departement %>% 
  subset(. , str_length(code_insee) == 2)

On peut ensuite créer une première visualisation avec la fonction plot().

library(stringr)
library(magrittr)
spdf_departement %>% 
  subset(. , str_length(code_insee) == 2) %>%
  plot()

Visualisation avec la librairie ggplot2

Pour réaliser la carte avec la librairie ggplot2, il faut au préalable transformer le SpatialPolygonDataFrame en data frame à l'aide de la fonction fortify. Pour réaliser cette opération, il est nécessaire de charger les paquets rgeos, maptools et ggplot2.

library(ggplot2)
library(rgeos)
library(maptools)
df_departement <- fortify(spdf_departement, region = "code_insee")

Comme dans l'exemple plus haut, on peut filtrer les départements de France métropolitaine avec la fonction str_length() du paquet stringr et la fonction filter du paquet dplyr.

library(dplyr)
df_departement %>% 
  filter(str_length(id) == 2)

On réalise ensuite la carte avec ggplot() :

library(dplyr)
df_departement %>% 
  filter(str_length(id) == 2) %>% 
  ggplot() + 
  geom_polygon(
    mapping = aes(x = long, y = lat, group = group), 
    color = "grey", fill = "white") + 
  coord_map(projection = "mercator") + 
  theme(axis.text = element_blank(), 
        axis.title = element_blank()) + 
  labs(title = "Carte des départements de France métropolitainee en 2014")

Visualisation interactive avec Leaflet

La librairie leaflet permet de réaliser facilement une carte interactive depuis R. Pour cela, il faut utiliser le SpatialPolygonDataFrame, celui que nous avons nommé spdf_departement. La syntaxe est très simple. La fonction addTiles() permet d'ajouter un fond de carte. La fonction addPolygons permet d'ajouter les polygones.

library(leaflet)
library(stringr)
library(magrittr)
spdf_departement %>% 
  subset(. , str_length(code_insee) == 2) %>% 
  leaflet() %>% 
  addTiles() %>% 
  addPolygons()

Notes et références

Cet article est issu de Wikibooks. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.