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.


Adhérer April
CC-BY-SA
La Quadrature du Net
Planet-libre
Wikio
6 commentaires
Comments feed for this article
8 novembre 2010 à 12:24
Dramac
Quitte à faire le traitement en python autant faire les plot directement dedans en utilisant la librairie Matplotlib, grande qualité, syntax à la matlab, et beaucoup de fonctionnalité.
8 novembre 2010 à 1:16
grindaizer
Je rejoins Dramac sur matplotlib ! J’ai été un gnuplotien avant moi aussi, parce que j’aime automatisé le tracé de mes courbes à la fin de certains calculs.
Et un jour j’ai découvert matplotlib et numpy, et maintenant je mets dans un seul script et le traitement des résultats, et le tracé ! Numpy a le même principe de traitement par matrice de nombres que matlab, ce qui simplifie pas mal de truc, et évite d’écrire des boucles compliquées juste pour trouver la valeur minimale par exemple !
Si tu veux plus de détails, n’hésite pas à demander !
Je te recommande les liens suivants :
http://www.scipy.org/
http://matplotlib.sourceforge.net/ (le mode de fonctionnement de la doc peut paraître déroutant au début, mais on s’y fait assez vite, surtout quand on compris comment sont implémentés les objets dans le code)
8 novembre 2010 à 1:37
Poulain François
Je plussoie. Depuis que j’ai découvert Scipy, je ne fais plus aucun code en Octave, Gnuplot ou PyXplot.
Matplotlib est de très grande qualité, permet de faire des IHM simples sans difficulté, et si jamais tu es limité par ses fonctionnalités 3D (elle sont encore balbutiantes pour le moment), il y a MayaVI qui est une petite merveille.
PoluX
8 novembre 2010 à 4:30
François
Je connais aussi matplotlib et scipy. J’ai commencé à tester cette solution aussi. Le seul hic est que je n’arrive toujours pas à trouver le confort du fit de gnuplot ailleurs (méthode LM, WSSR, nb de degrés de liberté, étapes de la minimisation, poids sur les points, erreurs sur les paramètres finaux, matrice de corrélation). Si vous avez ça, alors je serai ravi…
Pour les curieux, il existe aussi un module gnuplot pour python.
8 novembre 2010 à 4:44
grindaizer
J’avoue que je n’ai pas fait d’usage intensif de fit, tout juste quelque polynômes pour des points en utilisant numpy.polyfit(x,y,deg).
Mais sinon tu as cette page : http://www.scipy.org/Cookbook/FittingData qui développe certains concepts avec lesquels je ne suis pas forcément familier… je ne sais pas si tu trouveras ton bonheur !
9 novembre 2010 à 7:49
François
Merci à vous tous en tout cas pour vos messages