Le package cartography
est sur le CRAN.
Ce package permet la création de la plupart des types de cartes statistiques ou thématiques avec R.
Dans ce post je propose une série de cartes réalisées avec ce package.
J’ai indiqué sous chacune d’entre elles les principales fonctions utilisées.
L’intégralité des scripts mis en place pour créer les cartes sont disponibles dans la vignette du package.
Les fonds de cartes et les données sur les régions européennes mobilisées ici sont fournis avec le package.
Vous pouvez cliquer sur les images pour les agrandir.
Symboles proportionnels (carrés, cercles, barres)
Pour construire cette carte nous avons utilisé la fonction propSymbolsLayer
pour afficher des cercles proportionnels et la fonction tilesLayer
pour afficher une tuile Stamen comme fond de carte (nous aurions pu afficher une tuile OpenStreetMap, esri ou autre…).
Cartes choroplèthes
Cette carte utilise la fonction choroLayer
. Les couleurs utilisées sont choisis via la fonction carto.pal
qui propose des palettes de couleurs paramétrables (pour changer un peu de RColorBrewer
).
Stock et ratio
La fonction propSymbolsChoroLayer
permet d’afficher des cercles proportionnels colorés selon une autre variable discrétisée. Les principales méthodes de discrétisation sont disponibles (effectifs égaux, amplitudes égales, moyenne/écart-type, q6…).
Placement de labels
La fonction labelLayer
place des labels sur une carte, leur aspect et leur placement sont paramétrables.
Cartes de liens ou de flux
La fonction getLinkLayer
crée une couche de lignes à partir d’une liste de liens. La fonction gradLinkLayer
affiche ces liens avec des tailles graduées en fonction d’une variable.
Cartographie de discontinuités
Cette cartographie combine représentation choroplèthe et représentation des discontinuités. Les fonctions getBorders
et discLayer
permettent de construire et de représenter ces discontinuités.
Carroyage
La fonction getGridLayer
transforme un maillage en carroyage, la fonction getGridData
adapte un jeu de données à ce carroyage et la fonction choroLayer
cartographie ces données dans le carroyage.
Mais aussi
Sur l’ensemble de ces cartes les légendes sont paramétrables (texte, taille, position…). L’habillage des cartes est géré avec la fonction layoutLayer
qui permet de choisir un titre, d’afficher une flèche nord, une échelle, des sources, un auteur…
D’autres représentations n’ont pas été abordées ici : les cartes de typologies (données qualitatives), les cartes en densité de points, les “double-triangles”… Vous pourrez les découvrir en parcourant la documentation.
Un peu de technique
Nous avons essayé de réduire les dépendances du package au minimum. Ainsi, pour l’affichage des couches, seules les fonctionnalités graphiques de base de R (le package graphics
) sont utilisées. Les seuls packages indispensables (outre ceux livrés avec la distribution de base) sont sp
(pour gérer les objets spatiaux) et classInt
(les discrétisations). Certaines fonctions font appel à d’autre packages (rgeos
, rgdal
, OpenStreetMap
, raster
) qui peuvent se révéler plus ou moins facile à installer selon les plate-formes.
Des questions? Des problèmes?
Ce package est développé par mon collègue Nicolas Lambert et moi-même. La version stable est sur le CRAN et la version de développement est hébergée sur GitHub. Vous pouvez nous faire remonter d’éventuels bugs (que nous espérons rares ;-)) ici.
Sur le site ElementR vous trouverez une autre présentation du package et le script de construction de la composition cartographique illustrant cet article.
Nicolas a également publié un post sur le package ici.
Laurent évoque la création de carte de flux ici.
OpenEdition vous propose de citer ce billet de la manière suivante :
Timothée Giraud (7 octobre 2015). Cartographie avec R : le package cartography. R Géomatique. Consulté le 11 octobre 2024 à l’adresse https://doi.org/10.58079/tp3k
Bonjour,
Je veux créer une cartographie choroplèthe, pour la région Nord de pas de calais à l’échelle des communes en présentant la densité , le problème avec les données shapefile ça ne marche pas car il faut des données s4.
Quelqu’un pouvez-m’aider pour trouvé les bons fichiers adaptes à ce code, car j’ai rien trouvé pour le moment et je suis perdu
merci
le code :
d<- st_read("communes-20200101.shp")
commhdf %
mutate(dpt=str_sub(insee,1,2))%>%
filter(dpt %in% c(“59″,”62”))
dephdf %
mutate(code_insee = as.factor(code_insee)) %>%
dplyr::select(code_insee,geometry) %>%
filter(code_insee %in% c(“59″,”62”))
############################## données socio économiques
# données socio
socio <- read.csv("socioeco.csv", sep=';', dec= '.', header = TRUE, stringsAsFactors=FALSE)
socio$Densité.de.population..historique.depuis.1876..2017 <- as.numeric(socio$Densité.de.population..historique.depuis.1876..2017)
############################ Selectionner que la variable densité
socio % dplyr::select(Code ,Libellé, Densité.de.population..historique.depuis.1876..2017) %>%
mutate(dpt=str_sub(Code,1,2)) %>%filter(dpt %in% c(“59”, “62”))
# Renommer Libellé
names(socio)[1] <- "insee"
# Renommer Libellé
names(socio)[2] <- "nom"
str(socio)
mapdata<- merge(socio, commhdf, all.x=TRUE)
mapdata = st_as_sf(mapdata)
sf::st_crs(mapdata)
# carto
library(cartography)
par(mar=c(0,0,1.2,0))
plot(dep, col = rgb(250/256,235/256,214/256), border = rgb(169/256,179/256,180/256), bg = rgb(181/256,208/256,208/256),xlim = bbox(commhdf)[1, ], ylim = bbox(commhdf)[2, ])
choroLayer(x= mapdata, var = "Densité.de.population..historique.depuis.1876..2017", border = NA,
col = carto.pal("wine.pal", 6), legend.pos = "topleft",
add = TRUE, method = "geom", nclass = 6, legend.title.txt = "Densité de population\n(habitants/km2)")
plot(dephdf, lwd = 1.5, col = NA, border = rgb(138/256,85/256,67/256), add = TRUE)
layoutLayer(title = "Densité de population Nord-Pas-De-Calais",
col = rgb(205/256,210/256,212/256),
coltitle = rgb(138/256,85/256,67/256))
Bonjour,
Il est très difficile de vous répondre sans exemple reproductible (fichiers et code) voir https://www.tidyverse.org/help/
Ensuite je vous suggère d’utiliser plutôt le package `mapsf` (https://rgeomatic.hypotheses.org/2212) qui prend la suite de `cartography` et qui est plus simple d’utilisation.
Cordialement,
Timothée
Vraiment trés intéressant
merci 🙂
Je suis ingenieur en Météo, vraiment ce package m’a aidé à faire beaucoup de chose.
Merci beaucoup , je vous remercie
Merci à vous pour ce retour.
Slt tout le monde,
pour ma part, la fonction propSymbolsLayer ne marche pas chez moi, votre aide stv
Bonjour,
Vous donnez assez peu de détails permettant de vous aider. Vous postez votre commentaire en dessous d’un article de 2015, le package a pas mal évolué depuis. Référez vous plutôt à la documentation du package et aux articles suivants : https://rgeomatic.hypotheses.org/1205 & https://rgeomatic.hypotheses.org/1149
Bonjour, j’ai télécharger le R mais je ne sais pas comment faire pour télécharger cartography R à partir de là.
Quelle est la commande à entrer?
Merci
Bonjour,
cartography
s’installe comme tous les autres packages présents sur le CRAN :install.packages("cartography")
Si vous débutez avec R je vous recommande de jeter un oeil à la documentation. Vous trouverez ici quelques documents en français : https://cran.r-project.org/other-docs.html
Bonjour,
J’utilise actuellement le package Cartography et la fonction choroLayer pour faire mes cartes. Je définis les breaks pour les intervalles de couleurs. Seulement j’aimerais savoir où se situe l’inclusion de l’intervalle, lorsque l’on utilise cette fonction ? Je n’arrive pas à trouver cette information dans l’aide.
Merci par avance
Aurélia
Bonjour,
En effet cette information ne figure pas dans l’aide, je vais la rajouter au plus tôt.
Pour vous répondre, si l’on définit un vecteur de classes
breaks = c(2,5,10,15,20)
, les bornes utilisées seront de la forme suivante :[2 , 5 [
[5 , 10 [
[10, 15 [
[15, 20 ]
bonjour, nous cherchons à identifier des “communs” dans le domaine des transports, mobilités. C’est à dire des outils, données, logiciels, matériels ouverts. J’ai l’impression que vous avez développé des outils libres cartographiques ! Nous les groupons dans http://communs.lafabriquedesmobilites.fr
Merci ! gabriel