Pyxplot, un remplaçant de gnuplot ?

Les personnes qui me connaissent ou qui ont lu ce blog savent que j’utilise intensément gnuplot pour effectuer mes tracés.

Ce qu’est gnuplot

Gnuplot est un logiciel déjà très ancien permettant de faire des graphiques (2D, 3D…) dont la puissance est incomparable. Puissant à la fois du point de vue utilisateur puisqu’il s’utilise en ligne de commande, mais aussi puissant sur les résultats produits. De nouvelles fonctionnalités sont d’ailleurs toujours ajoutées à ce logiciel. L’une des fonctions que je trouve précieuse est la fonction fit que je trouve particulièrement bien faite.

Parmis les inconvénients, on peut en voir un et demi. Je m’explique. Le demi tient du fait que ce logiciel ne permet pas de traiter des données (sauf effectuer des opérations simples sur les colonnes). Demi inconvénient puisque si on considère le courant de pensée : faire une  chose et le faire bien, on concède que gnuplot n’est pas fait pour cela, et on utilisera un autre outil pour traiter ses données (personnellement, du perl ou du python). L’autre inconvénient est la licence de gnuplot. Elle n’est pas libre et les discussions sur la liste de gnuplot montrent que cela pose des problèmes de pérénité, même si, dans la pratique, tout semble continuer en faisant fi de ce point de blocage.

Pyxplot, un clone ?

Initialement écrit en python, pyxplot est un logiciel en C qui reprend la syntaxe de gnuplot. La plupart de vos réflexes sont donc sauvés, ce qui est non négligeable pour ce type de logiciel. La licence est une GPL, ce qui ravira les plus libristes et apaisera sans doute les autres.

Pyxplot est empaqueté (entre autre) pour debian squeeze et Archlinux (AUR).

En utilisant pyxplot comme gnuplot, vous verrez quelques modifications.

Les terminaux par exemple : jpeg, png, eps, tiff, svg, bmp, pdf, etc. Ils sont moins nombreux que sous gnuplot mais sont en qualité latex, ce qui est fort agréable.

Le terminal graphique est revu avec des boutons pour gérer la taille, l’impression etc. Utile ? je ne sais pas. On notera la présence d’un terminal graphique multi-fenêtre.

La fonction fit dont la syntaxe est la même, est en fait une implémentation différente malgré que celle de gnuplot soit dans le domaine public. Gnuplot utilise levenberg-Marquardt et pyxplot s’appuie sur la GSL. J’ai trouvé pyxplot moins rapide à réaliser les ajustement (détermination des erreurs), et moins locace aussi. Pas de fit.log (dommage !), pas de Chi-2, pas de nombres de degrés de liberté…

Dans la version acutelle (0.8.3), je n’ai pas trouvé le module pm3d permettant d’avoir des graphiques 3D jolis (projections…). A noter que les graphiques 3D semblent avoir été implémenté dans la version 0.8.2.

Voilà pour la revue non exhaustive qu’un utilisateur de gnuplot peut faire de pyxplot. Donc, même si pyxplot reprend beaucoup de choses de gnuplot, il y a de petites différences que l’on aime… ou pas. Mais pyxplot n’est-il que cela ?

Pyxplot : Aufhebung ?

Pyxplot n’a pas été créé pour cloner gnuplot à des fins libristes mais bel et bien pour combler un manque : traiter les données et les tracer en même temps car certains considèrent que ces deux actions ne sont en fait qu’une seule et même tâches.

Sauf erreur de ma part (j’avoue n’avoir pas lu toute la doc de gnuplot), ce qui est dans cette partie n’existe pas sous gnuplot. Pyxplot permet l’utilisation intensive de variable et d’expression rationnelle : une aubaine pour un utilisateur de perl comme moi. On peut aussi utiliser des jokers : * et ? pour tracer par exemple une série de fichiers :

plot ‘*.res’

Une fonction peut être déclarée sur un intervalle :

f(x) [-1:1]=x**3

La fonction tabulate permet de sortir une série de points d’une fonction. l’usage est plus pratique que sous gnuplot.

Le tracé d’une intégrale ne nécessite pas de calcul préalable :

plot int_dt(t**2,0,x)

ni même sa dérivée avec diff_dt.

Fans de fichiers de configuration maisons (.vimrc…), vous pouvez augmenter votre rapidité avec un .pyxplotrc avec des fonctions, variables… prédéfinies.

Je passe aussi les boucles while, for, le test if, la fonction solve pour résoudre un système d’équations, les constantes et unités physiques déjà connues, FFT et les nombres aléatoires…

Conclusion

Je n’ai pas encore utilisé pyxplot dans une situation réelle de traitement de données lourd, il m’est donc assez difficile de juger   »au quotidien » de ce logiciel. Néanmoins, même s’il a quelques lacunes de jeunesse, la route prise par les développeurs me semble tout à fait intéressante et je pense qu’à terme, il saura rivaliser avec les plus grands. Certains me diront que R est génial, je n’ai jamais réussi à m’y mettre vraiment… mais je ne désespère pas. :)

A noter que la documentation est bien faite, ce qui encore une fois, est de bonne augure.


Vus : 1730
Publié par François : 67