Cartographie avec R : le package cartography

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

propchoro

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

labels

La fonction labelLayer place des labels sur une carte, leur aspect et leur placement sont paramétrables.

Cartes de liens ou de flux

link

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

disc

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

dens
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.



Citer ce billet
Timothée Giraud (2015, 7 octobre). Cartographie avec R : le package cartography. R Géomatique. Consulté le 18 mars 2024, à l’adresse https://doi.org/10.58079/tp3k

16 réflexions sur « Cartographie avec R : le package cartography »

  1. 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))

  2. Je suis ingenieur en Météo, vraiment ce package m’a aidé à faire beaucoup de chose.
    Merci beaucoup , je vous remercie

  3. Slt tout le monde,
    pour ma part, la fonction propSymbolsLayer ne marche pas chez moi, votre aide stv

  4. 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

  5. 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

    1. 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 ]

  6. 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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.