PROJET AUTOBLOG


blog'o'm0le

source: blog'o'm0le

⇐ retour index

Autopsie d'une dataviz [9] : une carte "entonnoir" pour les régionales 2015

samedi 19 décembre 2015 à 17:59

Retour sur la réalisation des cartes réalisées pour Rue89 Strasbourg lors des deux tours des régionales 2015. Objectif : rendre compte, sur une même interface, des résultats électoraux aux niveaux communal, département et régional.

app_acal

5 200 communes, dix départements, trois régions : ce sont des chiffres-clés de l'Alsace-Champagne-Ardenne-Lorraine (ACAL), nouvelle région administrative créée fin 2014.

Les élections qui ont déterminé la composition du nouveau conseil régional ont été l'occasion de tenter de la cartographie très ambitieuse chez Rue89 Strasbourg. Je vais tenter un résumé le plus exhaustif possible des différentes étapes de ce boulot.

Le bon exemple du Huffington Post

La principale source d'inspiration de ces cartes est ce très bel exemple d'analyse électorale proposée par le Huffington Post, et codée avec la fameuse librairie D3js.

L'application du Huffington repose sur le principe d'un entonnoir : on propose à l'internaute deux niveaux de lecture, avec d'un côté le vote des 300 communes du Massachussets, et de l'autre les 14 comtés de cet Etat.

Crédit : Huffington Post

Huffington Post

Les résultats des plus grands territoires apparaissent comme une synthèse des communes qui les composent, un peu comme si on les avait lâchés dans un entonnoir.

On observe des bastions démocrates et républicains bien délimités au niveau communal, ce qui se ressent sur les résultats cantonaux.

massa_2

Huffington Post

A l'échelle de l'ACAL, on passait à un niveau bien plus costaud, avec près de 5 200 villes à cartographier. L'échelle départementale d'à peine dix unités me paraissait trop faible, tandis que l'échelle cantonale, plus proche de l'application du Huffington, ne me paraissait pas la plus compréhensible.

Bref, trois niveaux commençaient à émerger pour les futures élections régionales : les communes, les départements, et les régions.

A ce stade, il était temps de se pencher sur la faisabilité technique de la chose.

Un squelette solide avant de démarrer les festivités

En furetant un peu, je suis tombé sur ce gabarit avec code source directement inspiré de la carte du Huffington. Ca m'a suffi pour commencer les tests avec mes propres fichiers géographiques, soigneusement préparés sur le logiciel QGis.

Sans faire un récap' de tous les atermoiements techniques, j'en ai appris plus sur l'option CSS "hidden", qui contrairement au "opacity" de l'exemple, permet de masquer toutes les options d'un calque.

Il y a également eu quelques lignes de code dédiées à un effet de zoom sur les communes de chaque département, directement calqué sur cet exemple publié par le créateur de D3 lui-même.

L'idée était d'encourager l'exploration des données en permettant à l'utilisateur d'accéder à des communes trop petites pour être consultées depuis la vue d'ensemble.

Une des options ajoutées à ce stade a été l'affichage des sous-préfectures seulement lorsqu'un département est zoomé pour offrir des repères supplémentaires.

Une fois le squelette prêt, le plus dur restait à faire : le connecter à des données, dans l'idée de traiter en direct les résultats de ces élections régionales.

Un parser en PHP qui a fait ses preuves

Une fois le modèle de carte prêt à être montré, je l'ai envoyé à Tom Wersinger, développeur chez Rue89, pour lui demander son avis.

Tom nous avait déjà filé un précieux coup de main au moment des élections départementales, où on avait pu apprécier la puissance d'un parser en PHP codé par ses soins.

Pour le dire vite, il permet de traduire un tableur Google en json, en paramétrant (assez) simplement quelques options comme l'identifiant de la feuille Google.

Dès que la connexion est établie entre le parser et le tableur, un petit F5 permet de générer une nouvelle version du json. Un nouveau rafraîchissement sur la carte et le tour est joué. Sans douleur, donc !

Comme on passait quand même à une échelle largement supérieure à celle des départementales, je voulais m'assurer que le parser supporterait la charge.

Tom a eu la gentillesse de m'aider dans cette tâche sur son temps libre, avec en plus :

Et après plusieurs heures de codage intensif, nous sommes arrivés à une carte du second tour de la dernière présidentielle optimale, bien reliée à une feuille de calcul Google :

acal_pre012

Cliquez sur l'image pour l'agrandir

XML et CSV

Restait plus, à ce stade, qu'à nous assurer d'avoir des données régulièrement mises à jour le jour J. Là, ça s'est un peu compliqué, car :

Mais heureusement, le Ministère de l'Intérieur allait mettre à disposition de la presse des XML mis à jour tous les quarts d'heure. La principale difficulté consistait à convertir ce format composé de balises en tableur prêt à être copié/collé dans Google Drive.

Je dois reconnaître que ce n'est pas franchement mon domaine, contrairement au camarade Ettore Rizza. Ettore a écrit un script directement taillé pour les XML de l'ACAL.

Une fois digéré par Open Refine, on obtenait grâce à ce script des données bien propres et prêtes à être téléchargées au format CSV.

Plus qu'à mettre en oeuvre tout ça le grand soir venu :-)

Les limites de l'exercice

Dans l'ensemble, tout s'est passé sans encombre, mais il faut quand même signaler quelques embûches et aspects perfectibles, notamment :

Le bilan

Ce travail de longue haleine a payé avec des audiences plutôt bonnes pour ce genre d'événements sur Rue89 S : 18 000 vues pour le premier tour, et à peu près la moitié pour le second.

Nous avons également réussir à corriger le tir pour les faiblesses repérées lors du premier tour (notamment les villes manquantes) pour pouvoir optimiser le traitement live.

J'ai également codé une nouvelle version de la carte pour le second tour, en intégrant un dégradé selon le pourcentage du vainqueurConcrètement, cela nous a permis de passer de ça :

acal_m0le_t1

Cliquez sur l'image pour accéder à la page du premier tour

A ça :

acal_m0le_t2

Cliquez sur l'image pour accéder à la page du second tour

Petite fierté strictement perso : notre carte du premier tour s'est retrouvé dans le Top 10 hebdomadaire du Global Investigative Journalism Network. Pour la petite histoire, c'est la seconde fois de l'année :-) !

Le template codé avec Tom va maintenant nous permettre d'étudier en profondeur l'ACAL, territoire plein de disparités comme en témoignent ces "cartes de force" du PS, du FN et des Républicains :

psfnlracal

Bref, ça promet pour 2016 !

J'en profite pour remercier une nouvelle fois les excellents Tom, Ettore et Joël pour leur précieuse aide !

PS : le code source de la carte du premier tour sera bientôt publié.