Magrit, une interface de cartographie thématique en ligne

Un outil qui fera date :

Le thème de la cartographie revient périodiquement sur ce blog : je n’y connais rien et me contente de bricolages approximatifs, mais Joël s’y connaît beaucoup, beaucoup plus, et produit régulièrement de très chouettes résultats cartographiques.

Nous avons tous les deux été impressionnés – et comme le montrent les premiers retours sur les listes de diffusion, nous ne sommes pas les seuls – par la qualité de Magrit, qui permet de faire de la cartographie thématique depuis une interface interactive très bien documentée. Les résultats sont proches de ceux que permet d’obtenir le package cartography, et pour cause, c’est en partie la même équipe qui produit les deux outils.

Plus de détails sur le site de l’UMS RIATE, où officie Timothée Giraud, que je suspecte d’être le gentil organisateur des deux communautés de développeurs du package cartography d’un côté, de Magrit de l’autre.

Exemple de carte tirée de la galerie Magrit :

À suivre sur Hypothèses

La plateforme Hypothèses est définitivement the place to be pour suivre ce qui se fait en cartographie avec R (et d3.js, et autres trucs associés). Je vous conseille :

De Google My Maps à ggplot2 en quelques secondes

J’avais brièvement évoqué, en juin dernier, la version 1.0.0 du package R xml2, qui permet de lire du XML dans R en permettant d’y mobiliser la librairie libxml. Voici un petit bricolage basé sur cette chaîne d’outils.

Les données : Google My Maps

Au hasard d’une recherche sans rapport avec le schmilblick, je suis tombé sur cette carte des morts violentes à Barbès et à la Goutte d’Or. La carte a été réalisée par Jean-Raphaël Bourge, qui fait un superbe travail de recherche sur le quartier.

En fouillant un peu, j’ai également retrouvé cette carte des églises africaines qui font leur publicité à la Goutte d’Or. La carte a été réalisée par Baptiste Coulmont, qui a amplement documenté le phénomène, et qui a publié un très chouette article sur le sujet.

Enfin, en creusant encore un peu, je découvre une autre carte : « Gangs of Los Angeles« , et son complément sur les gangs hispaniques. Les graffiti que laissent les gangs de Los Angeles font l’objet d’une recension aussi systématique que possible sur Instagram, et il existe des tonnes de cartes très détaillées des territoires de ces gangs1.

Le problème : KML et ggplot2

Je me suis demandé comment je pouvais réutiliser les données de ces cartes. Google My Maps est un outil très pratique qui peut être utilisé sans compétence technique par un nombre illimité d’utilisateurs, ce qui en fait un excellent support pour le recueil de données géolocalisées ; mais comment réexploiter ces données ?

Google My Maps permet d’exporter les informations d’une carte au format KML, ce qui est pratique, mais l’utilisation de ces données par des outils tels que les packages R rgdal ou sf n’est pas facile, surtout si l’on souhaite utiliser les packages du « tidyverse » (dyplr et ggplot2 en particulier) pour manipuler les données et les visualiser.

La solution (limitée) : tidykml

Histoire de passer rapidement d’un fichier KML à un jeu de données qui puisse être utilisé avec ces packages, j’ai codé un petit package, tidykml, qui importe les éléments KML les plus simples (les géométries de base et leurs métadonnées). Tous les détails sont dans le README du package, et voici un exemple de résultat :

gangs

Le package est très limité : il ne gère pas les « géométries multiples » (les multi-polygones qui permettent de visualiser des îles, par exemple), et il n’a été testé que sur les cartes listées plus haut, plus quelques autres exemples de cartes issues de Google My Maps. En attendant mieux, le package permet de réaliser des cartes comme celle-ci :

sherman

L’exemple ci-dessus, qui ne demande que quelques lignes de code dont la plupart sont des réglages graphiques réalisés dans ggplot2, apparaît également dans ce billet en anglais, un peu plus technique.

Pour aller plus loin

Mon objectif, avec tidykml, était de raccourcir autant que possible le code allant de l’import d’un fichier KML à un graphique réalisé avec ggplot2, histoire de faciliter la réutilisation de données Google My Maps sur d’autres supports, et sans passer par des solutions de cartographie plus sophistiquées.

Pour aller plus loin, il faudrait avant tout que je trouve un moyen de prendre en compte les « géométries multiples » évoquées plus haut, et aussi que je documente l’énorme répertoire d’outils cartographiques pour R, comme par exemple l’excellent package cartography de Timothée Giraud et al..

Pas d’empressement toutefois : les outils de cartographie avec R sont en discussion et pourraient évoluer de manière à rendre mon package obsolète dans les mois à venir. Tant mieux.

  1. Voir notamment cette conversation sur Reddit. []

Un petit mot pour Jean-Christophe Victor

jean-chirstophe-victor Jean-Christophe Victor, le formidable pédagogue de l’émission « Le dessous des cartes » sur Arte, a rendu l’antenne hier. Son émission est la seule émission télévisuelle que je recommande à tous mes étudiants de première année, et je sais de source sûre que son émission avait aussi un immense succès dans l’enseignement secondaire.

Jean-Christophe Victor avait cofondé le Lépac, un laboratoire privé de géopolitique, sur lequel s’appuyait son émission. Cette position atypique, insérée dans l’espace médiatique et hors du champ universitaire, en faisait une entreprise intellectuelle assez exceptionnelle, dotée d’une grande liberté de parole, comme en témoigne sa dernière interview sur la façon dont Google Maps gère la visualisation des frontières contestées dans des pays comme la Chine ou la Russie.

La dernière émission de Jean-Christophe Victor est consultable dans le billet d’hommage publié par Arte Info, et l’on trouvera toutes sortes d’hommages sur le compte Twitter du Lépac. J’espère qu’Arte continuera à diffuser l’émission et d’en éditer l’intégrale en DVD, afin que rien ne se perde de cette excellente ressource pédagogique.

Comment Joël a (presque) cartographié les électeurs FN à l’adresse

Joël vient de publier un article sur le vote FN à Marseille, intitulé : « A Marseille dans les “quartiers nord” : dis-moi où tu habites, je te dirai pour qui tu votes« . L’article est illustré à grands renforts de cartes montrant le détail du vote dans les « quartiers nords » de Marseille, et mettant à l’épreuve les revendications représentatives des élus FN locaux :

joel-marseille

Joël a également publié sur son site une explication technique complète, « Comment j’ai (presque) cartographié les électeurs FN à l’adresse« , rédigée dans le joli gabarit tufte-css fidèle au style d’Edward Tufte :

joel-tufte

La note technique montre comment reproduire, code R à l’appui, les cartes statiques et interactives de l’article, à l’aide des packages tmap et leaflet1 respectivement, et en utilisant les fonds de carte d’OpenStreetMap.

Toutefois, c’est à mon sens au niveau du travail de préparation des données que la note de Joël est la plus intéressante, notamment parce qu’il y explique comment mettre en correspondance des données INSEE collectées au niveau IRIS et des données électorales collectées au niveau des bureaux de vote au moyen d’une géolocalisation guidée par la Base Adresse Nationale :

adresse.data.gouv.fr

La note illustre également les limites actuelles de l’open data gouvernemental en France : si les donnés actuelles permettent des cartographies ultra-précises, elles ne permettent toutefois pas de mettre n’importe quelle variable sur ces cartes, comme l’illustre le petit bricolage technique auquel Joël a eu recours pour obtenir le type de logement des électeurs (maisons versus logement collectif).

Dans la note de Joël comme souvent en sciences sociales il me semble, le modèle interprétatif est simple, ce sont les données qui sont compliquées. Le résultat de cette combinaison est une série d’observations empiriquement très précises, car basées sur des variables mesurées en « haute résolution », et faciles à interpréter.

  1. La librairie Leaflet donne accès à énormément de fonds de cartes : jetez un coup d’oeil ! []

Cartographie pas si facile

Suite à ma note sur le megacombo “R + Google Map Charts” et aux commentaires avisés d’Éric Verdeil, un autre blogueur du coin, j’essaie de fabriquer des cartes avec maptools sous R et spmap sous Stata. J’essaie, plus exactement, de reproduire ce type de cartes, qui ont un lien avec ma thèse (message subliminal à quelques lecteurs et à moi-même).

Après quelques heures de code et une bonne dizaine d’emails échangés avec Baptiste Coulmont, dont les conseils avisés m’ont permis de régler plusieurs problèmes que je n’aurais jamais réussis à élucider tout seul, je pense avoir simplement réussi à me prouver que ce n’était pas simple.

Mais après quelques minutes de code supplémentaire, toujours avec l’aide inestimable de Baptiste Coulmont, je peux enfin mettre cette note à jour et visualiser correctement, voire même élégamment (si le terme est approprié), le taux de mortalité par cancer du poumon chez les femmes en 2008 dans les 27 États-membres de l’Union européenne, en suivant un modèle de l’European Cancer Observatory :

J’ai utilisé un fonds de carte EuroGeographics, des données de l’International Agency for Cancer Research, et la patience de Baptiste, plus quelques autres correspondants qui recevront bientôt tous un email de remerciements avec un lien vers une page permettant de répliquer l’intégralité de ma démarche.

En attendant, le code est disponible, avec la carte et des explications je ne sais pas vraiment si j’ai le droit de distribuer les fichiers SHP (shapefile) utilisés pour la carte, même avec une mention complète de la source.

Comme l’écrit Baptiste, le code final n’est pas très impressionnant, mais il a fallu de nombreuses étapes avant d’arriver à intégrer exactement les bonnes commandes, et à résoudre les situations illogiques. Le même résultat sous Stata (non reproduit ici) est moins élégant, mais s’obtient en une demi-douzaine de lignes à partir d’un modèle disponible dans la documentation du module approprié.

Cartographie facile

Andy Eggers a écrit un petit programme pour R, googlemap, qui est très pratique pour visualiser rapidement une variable sur une aire géographique en utilisant un gradient de couleur, à partir de Google Charts.

Voici par exemple le pourcentage de femmes dans les parlements européens en 2008, qui varie de 8.7% (Malte) à 47% (Suède) :

Women in parliament (%, 2008)

Les données proviennent des Comparative Political Datasets de l’équipe de Klaus Armingeon (CPD-3). J’ai dû rajouter les codes ISO 3166-2, ce qui n’a pris très longtemps. La manipulation sous R prend moins de dix minutes.

Une autre pour la route ? Les exécutions capitales aux États-Unis en 2009, à partir des données du Death Penalty Information Center. Environ 45% des exécutions ont eu lieu au Texas, avec 24 exécutions :

Executions in the USA (2009)

Il manque les options nécessaires pour agrandir le graphique et exporter en format vectoriel, mais Google Charts ne le permet apparemment pas. Il faudrait aussi modifier le code pour obtenir une légende et jouer avec les autres options pour les cartes de Google Charts.

Pour les autres types de graphiques, Andy Eggers a aussi écrit googleplot.

Note : les données ont été préparées sous Excel puis Stata, et incluent aussi quelques variables supplémentaires (quelques pays extra-européens pour les femmes parlementaires, et des fréquences). Les fichier de données sont compressés mais ne sont lourds du tout (4KB).