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çais
modifierImport des données
modifierOn 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
modifierPour 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
modifierPour 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
modifierLa 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()