Aller au contenu

Programmer en R/Représenter une carte

Un livre de Wikilivres.

Le langage R permet de réaliser des cartes.

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

[modifier | modifier le wikicode]

Import des données

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

Wikipédia propose un article sur : « 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

[modifier | modifier le wikicode]