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
[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]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()