Reproduction d’une figure de William Playfair (1786) sur des données modernes
Author
Lino Galiana
Il est beaucoup question de dette publique actuellement. Il se trouve que j’ai récemment découvert dans le cours de Stanislas Dehaene au collège de France sur la perception des graphiques qu’une des premières représentations graphiques modernes, qu’on doit à William Playfair en 1786, représentait justement l’évolution de la dette (anglaise) au cours du temps.
J’avais donc envie de m’amuser à rejouer cette figure historique sur les données françaises récentes (détails sur celles-ci plus bas). Et puis ensuite, tout de même, de faire une représentation qui bénéficie de presque 250 ans de recul sur la perception des graphiques et permettant de mieux communiquer la “vérité” (une notion qui elle-même mérite discussion) des données. Les enjeux conceptuels et les précautions d’interprétation sont proposés plus bas.
{// Crée le conteneurconst container =html`<div class="figures-playfair"></div>`;// Petite fonction utilitaire pour (re)faire la mise en pageconst mq =window.matchMedia("(min-width: 900px)");functionapplyLayout() { container.style.display="grid"; container.style.gridTemplateColumns= mq.matches?"1fr 1fr":"1fr"; container.style.gap="16px"; container.style.alignItems="start"; }// Construire les deux panneauxconst left =document.createElement("div"); left.appendChild(html`<h4>La dette française, à la Playfair</h4>`);// left.appendChild(// makeRough(// plot_playfair_raw,// { randomize: false, bowing: 0, roughness: 0, backgroundColor: "#fbe9d3", fillStyle: "solid", fontFamily: "Patrick Hand" }// )//);const img_playfair =Object.assign(newImage(), { src:"https://minio.lab.sspcloud.fr/lgaliana/data/dataviz/chart_national_debt_reproduction.png" }); img_playfair.style.maxWidth="100%"; img_playfair.style.height="auto"; left.appendChild(img_playfair);const right =document.createElement("div"); right.appendChild(html`<h4>Version originale</h4>`);const img =Object.assign(newImage(), { src:"https://minio.lab.sspcloud.fr/lgaliana/data/dataviz/playfair-national-debt.png" });// Image responsive img.style.maxWidth="100%"; img.style.height="auto"; right.appendChild(img); container.append(left, right);// Applique la mise en page initiale et écoute les changementsapplyLayout();// Compat ancien / nouveau navigateurif (mq.addEventListener) mq.addEventListener("change", applyLayout);else mq.addListener(applyLayout);// Sécuriser avec un listener de resize (au cas où)const onResize = () =>applyLayout();window.addEventListener("resize", onResize);// Nettoyage si le DOM est détaché container.addEventListener("DOMNodeRemoved", () => {if (mq.removeEventListener) mq.removeEventListener("change", applyLayout);else mq.removeListener(applyLayout);window.removeEventListener("resize", onResize); }, { once:true });return container;}
Parmi les principaux problèmes de la représentation de gauche, on peut noter l’axe à droite auquel nous sommes peu familiers1 et le point de départ de l’axe des ordonnées. Sur ce dernier sujet, il est plus juste de partir de 0 qui fournit, en quelques sorte, un idéal (un Etat sans endettement) permettant d’évaluer plus justement les valeurs observées et la pente de la série temporelle.
On peut aussi tirer parti de l’interactivité du navigateur web pour rendre plus ergonomique la visualisation. Pour améliorer la contextualisation de ces statistiques, des annotations sur certaines périodes clés ne seraient pas inutiles. Mais comme elles peuvent alourdir la visualisation sans réflexion approfondie sur l’ergonomie de la figure, j’ai préféré ne pas en mettre.
html`${viewof yearZoom}${viewof plot_modern}`
viewof plot_modern = Plot.plot({width:670,height:330,marginBottom:38,marginRight:130,style:"user-select: none; touch-action: none; max-width: 100%;",title:html`<div style="font-family: var(--sans-serif); font-weight: 600;">${'La dette des administrations publiques françaises'}</div>`,caption:md`Cette figure représente la [dette au sens de Maastricht](https://www.insee.fr/fr/statistiques/8574703?sommaire=8574832#documentation) des administrations publiques françaises, rapportée au PIB. Les seuils de 60% (critère de convergence de Maastricht) et de 100% (dette égale au PIB) ont été rapportés.<br>Source: Insee, [comptes nationaux annuels](https://www.insee.fr/fr/statistiques/8574703?sommaire=8574832#documentation).`,x: { domain: yearZoom,grid:true,label:"Année" },y: {grid:true,domain: [0, d3.max(df, d => d.OBS_VALUE_NIVEAU)+10],label:"Ratio dette/PIB (%)" },marks: [ Plot.ruleY( [60,100], {strokeDasharray:"4,2"} ),// petit triangle indicateur Plot.dot( df,pointerMX({symbol:"triangle",x:"TIME_PERIOD",frameAnchor:"top",atrest:"maxX",fill:"#c81025",rotate:180 }) ),// courbe fine en arrière-plan Plot.lineY(df, {x:"TIME_PERIOD",y:"OBS_VALUE_NIVEAU",stroke:"red",strokeWidth:1,curve:"natural",opacity:0.250 }),// courbe principale "mise en avant" Plot.lineY( df,pointerMX({x:"TIME_PERIOD",y:"OBS_VALUE_NIVEAU",atrest:"maxX",selector:"before",stroke:"#c81025",curve:"natural",strokeWidth:3,markerStart:true }) ),// annotation du nom de la série (fixe : "Dette") Plot.text( df,pointerMX({x:"TIME_PERIOD",y:"OBS_VALUE_NIVEAU",atrest:"maxX",selector:"eq",fontWeight:"bold",text: d => d.OBS_VALUE_NIVEAU.toFixed(1) +" %",fontSize:14,textAnchor:"end",dx:50,stroke:"white",fill:"#c81025" }) ),// annotation de valeur dynamique Plot.text( df,pointerMX({x:"TIME_PERIOD",y:"OBS_VALUE_NIVEAU",atrest:"maxX",text: (d) => d.TIME_PERIOD.toLocaleString(undefined, {year:"numeric"}),fill:"currentColor",frameAnchor:"top",dy:-15 }) ), ]});
Données et définitions conceptuelles
Ces graphiques s’appuient sur les comptes nationaux - une représentation synthétique de la structure de l’économie française - publiés par l’Insee. Le concept retenu est celui de la dette au sens de Maastricht. Son périmètre est ici celui des administrations publiques (les APU dans le jargon de la comptabilité nationale) qui prend en compte les passifs de l’État, des organismes divers d’administration centrale, des administrations publiques locales et des administrations de sécurité sociale. Le périmètre des engagements de l’Etat intégrés dans la définition de la dette au sens de Maastricht est proposé sur le site de l’Insee .
Le code de préparation de données est disponible ci-dessous. L’ensemble du code pour produire les visualisations est disponible sur linogaliana/playfair-viz-reproduction
Ici, il ne me semble pas choquant de représenter à droite l’axe des \(y\) si on désire focaliser l’attention sur les dernières valeurs. J’ai choisi de remettre l’axe à gauche pour correspondre aux attentes usuelles des lecteurs. De toute manière, pour connaître les valeurs précises, l’interactivité permet d’afficher celles-ci avec la souris (ordinateur) ou en cliquant sur un point (smartphone ou tablette).↩︎