Fantomas’side

Weblog open-source

Open Flash Chart avec le Python's style !

Récemment, pour les besoins d'un projet dont je parlerais bientôt lors d'un prochain article, je me suis mis à rechercher une librairie Python me permettant de réaliser rapidement de jolis graphiques statistiques.

Passé les PyChart et autre ChartDirector. Mon choix s'est porté sur Open Flash Chart, une librairie permettant de réaliser des graphiques statistiques grâce à Flash.

Comme son nom le laisse supposer, la librairie est open source, un point primordial ;) Un site bien documenté avec des exemples complets, permettant une prise en main rapide et un résultat graphique abouti, m'auront convaincu assez rapidement.

L'avantage de cette librairie est qu'il est techniquement possible de l'interfacer avec tous les langages, car le fichier flash générant le graphique, se charge de récupérer un fichier au format texte, contenant les données du document.

Il suffit donc de générer un simple fichier texte, pour pouvoir afficher un graphique complexe, ce qui est un avantage notable pour la machine qui hébergera la représentation des graphiques. En effet on nous n'avons pas générer d'image, comme les autres librairies, et encore moins à les stocker.

La bonne nouvelle, est qu'il existe déjà des APIs pour différents langages, tel PHP, Perl, mais aussi Python. Génial ! :)

La moins bonne nouvelle vient du fait, que cette dite API Python ne fonctionne pas ou plus, et n'est clairement pas maintenue à jours. :(

L'autre bonne nouvelle, est que j'ai pris le soin de recoder l'API Python pour Open Flash Chart. :)

En me basant sur la documentation et sur le travail de la précédente API écrite par Guenther Harrasser, j'ai corrigé, nettoyé et mis à jour le code. Pour finalement le réécrire complétement...

J'en ai profité pour mailer l'auteur, et lui proposer mon correctif. En l'attente d'une réponse, je me propose pour vous faire partager mon travail.

Nous allons dans cette exemple générer un graphique simple composé d'une ligne et d'une série de barres, la ligne étant placé sur l'axe Y de droite.

from openflashchart import Graph

# Création du graph et titrage
graph = Graph()
graph.title('My Graph Title', '{font-size:20px}')

# Insertion des barres, de la ligne,
# et des données associées
graph.bar_outline(50, '#005aff', '#666666', 'Bar Stats', 10)
graph.set_data(range(10))
graph.line_hollow(2, 5, '#05a0FF', 'Line Stats', 10)
graph.set_data(range(10, 20))

# Assignation de la ligne sur l'axe Y de droite,
# des libelles en abscisse, et des légende en ordonnée.
graph.attach_to_y_right_axis(2)
graph.set_x_labels(['x_%i' % i for i in range(10)])
graph.set_y_legend('Legend Left', 15, '#ff4a00')
graph.set_y_right_legend('Legend Right', 15, '#4aff00')

# Génération du graphique
stat = graph.render()

Télécharger Open Flash Chart : API Python

Edition du 30 mai 2007 : Une amélioration du code de rendu HTML a été faite, pour gagner en lisibilité et aussi pour facilité la manipulation du DOM.