Programmer en R/Représenter une carte


Le langage R permet de réaliser des cartes.

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

Import des donnéesModifier

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 baseModifier

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 ggplot2Modifier

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 LeafletModifier

 

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érencesModifier