[La boite à outils du peakiste] diagrammes de sankey
Publié : 11 janv. 2016, 19:53
Les diagrammes de sankey sont trés utiles quand on veut représenter des flux quantitatifs qui se séparent, et/ou se réunissent. Ils représentent les flux par des traits de largeur proportionnelle à leur importance. L'EIA par exemple en réalise énormément pour représenter les fleux énergétiques :Lien le diagramme de sankey de l'énergie mondiale.
Malheureux, peu d'outils existent pour en faire. Ce n'est pas intégré dans des tableurs, et il existent un ou deux outils en ligne mais rien d'extraordinaire. Le peakiste doit donc faire un peu de programmation. Il existe en effet une toolbox pour Python nommée Matplotlib qui permet, entre plein d'autres choses, de réaliser des diagrammes de Sankey. Installer matplotlib sous python standard est un peu pénible (faut installer une demi douzaine d'autres librairies avant) je me suis donc tourné vers Spyder, qui est une plate forme de développement python intégrant des dizaines de librairies à usage scientifique. Je suis flemmard.
Voici un petit exemple : diagramme de Sankey du raffinage du pétrole aux états-Unis.
Voici le code pour le produire :
Ca sort un diagramme comme ça :
Et surtout Matplotlib a le bon gout de le sortir en svg, un format vectoriel. Une image vectoriel est décrite par des éléments géométriques et non par un tableau de pixel, ce qui a pour principal avantage qu'on la redimensionner indéfiniment sans perte de qualité.
Je peux donc exporter en svg, et retoucher l'image avec inkscape pour le coté cosmétique. Par exemple je vire les axes (inutiles), je fait un dégradé (qui a dit "c'est kitsh" dans le fond du forum?) et je met des tites icônes :
Bref, j'invite les personnes intéressées à se mettre à ces outils, c'est pas si dur que ça à prendre en main, et c'est tout gratuit.
Malheureux, peu d'outils existent pour en faire. Ce n'est pas intégré dans des tableurs, et il existent un ou deux outils en ligne mais rien d'extraordinaire. Le peakiste doit donc faire un peu de programmation. Il existe en effet une toolbox pour Python nommée Matplotlib qui permet, entre plein d'autres choses, de réaliser des diagrammes de Sankey. Installer matplotlib sous python standard est un peu pénible (faut installer une demi douzaine d'autres librairies avant) je me suis donc tourné vers Spyder, qui est une plate forme de développement python intégrant des dizaines de librairies à usage scientifique. Je suis flemmard.

Voici un petit exemple : diagramme de Sankey du raffinage du pétrole aux états-Unis.
Voici le code pour le produire :
Code : Tout sélectionner
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey
fig = plt.figure()
#
#
ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[],
title="Raffinage aux Etats-Unis")
flows = [ 7.344, 8.708 , -16.052*0.45, -16.052*0.3, -16.052*0.1,-16.052*0.15 ]
#
#
sankey = Sankey(ax=ax,scale = 8e-3, unit='Mb/j')
sankey.add(flows=flows, label='one', patchlabel="Raffinage",trunklength =0.4,
orientations=[-1, 1, 1, 1, -1, -1], labels = ['brut importé ','production nationale', 'essence', 'diesel', 'jet fuel', 'autres'])
Et surtout Matplotlib a le bon gout de le sortir en svg, un format vectoriel. Une image vectoriel est décrite par des éléments géométriques et non par un tableau de pixel, ce qui a pour principal avantage qu'on la redimensionner indéfiniment sans perte de qualité.
Je peux donc exporter en svg, et retoucher l'image avec inkscape pour le coté cosmétique. Par exemple je vire les axes (inutiles), je fait un dégradé (qui a dit "c'est kitsh" dans le fond du forum?) et je met des tites icônes :
Bref, j'invite les personnes intéressées à se mettre à ces outils, c'est pas si dur que ça à prendre en main, et c'est tout gratuit.