![]() | ![]() | ![]() | Gnuplot |
Une particularité de gnuplot est de fonctionner en mode console, c'est-à-dire qu'on n'a pas accès à des icônes ou à des menus déroulants. Au lieu de cela, on tape des commandes dans l'émulateur de console (xterm par exemple), qui sont interprétées par gnuplot comme par un shell.
Ce fonctionnement peut dérouter au début, mais il est efficace, particulièrement lorsqu'on écrit des scripts (petits programmes ou suites d'instructions).
Pour démarrer gnuplot, il suffit de taper gnuplot en ligne de commande. On obtient alors la bannière, suivie de l'invite : gnuplot>
Le logiciel attend vos commandes. Commençons : plot sin(x)
Si tout se passe bien, vous voyez apparaître une fenêtre contenant le
graphe de la fonction sinus, sur l'intervalle [-10,10] (valeurs par
défaut).
plot est la commande qui permet de faire des tracés de courbes. Vous pouvez accéder à sa documentation avec help plot. Vous pouvez constater que l'aide de plot ouvre sur un certain nombre de sous-rubriques (subtopic) qui correspondent aux principales options de plot. C'est le fonctionnement général de l'aide de gnuplot, qui permet de raffiner progressivement la recherche d'aide sur une commande ou un sujet.
Ainsi, si l'on tape intervalles (ou ranges) à l'invite Subtopic of plot: , ou directement help plot intervalles, on obtient la syntaxe qui permet de spécifier un intervalle de tracé. On peut alors essayer d'améliorer notre tracé : gnuplot> plot [-3*pi:3*pi] [-1.5:1.5] sin(x)
Avec cette méthode, si l'on étudie de nombreuses fonctions sur le même intervalle, il faudra chaque fois le spécifier, ce qui est fastidieux. Heureusement, on peut définir des valeurs par défaut :
gnuplot> set xrange [-3*pi:3*pi] gnuplot> set yrange [-1.5:1.5] gnuplot> plot sin(x)
Nous donnera le même graphe que ci-dessus, mais les nouveaux intervalles seront valables pour tous les futurs tracés, jusqu'à nouvel ordre.
Comme les intervalles par défaut, un très grand nombre d'options et paramètres par défaut de gnuplot peuvent être réglés avec la commande set. Consultez help set pour en connaître la liste. Que leur nombre ne vous effraie pas : un grand nombre d'entre elles sont des variantes, de même syntaxe. Par exemple, xrange possède des variantes pour les autres variables : y, x2,y2 (pour les axes secondaires), z (pour le tracé de surfaces), r (pour le mode polaire) et t,u,v (pour les courbes/surfaces paramétriques).
La commande show permet de connaître la valeur d'un paramètre
défini avec set. Ces valeurs peuvent être numériques, ou bien
des intervalles, comme on l'a vu, ou encore des mots-clefs tirés d'un
ensemble bien défini, dont le cas particulier des options binaires,
qui ne peuvent être que ON ou OFF. Une particularité de
syntaxe de gnuplot est l'utilisation de couples de mots-clef
set commande, set nocommande, illustrée par l'exemple
suivant :
gnuplot> set parametric gnuplot> plot sin(2*t),sin(3*t) gnuplot> set noparametric
Qui nous donne une magnifique courbe de Lissajous (paramétrique), puis repasse en mode non paramétrique. Comme indiqué dans l'aide de set parametric, la variable muette par défaut dans le mode paramétrique est t, mais cela aussi peut être changé avec set dummy .
De la même manière, on peut passer en mode polaire (set polar, set nopolar) et combiner les modes polaire et paramétrique.
Intéressons nous maintenant à une fonction de deux variables f(x,y), qui représente grossièrement une ondulation amortie en 2D.
gnuplot> r(x,y)=sqrt(x**2+y**2) gnuplot> f(x,y)=sin(r(x,y))/r(x,y) gnuplot> splot f(x,y)
Nous voyons déjà que gnuplot permet la définition et la réutilisation de fonctions (ici, de deux variables). Bien entendu, on peut également fixer des paramètres, comme a=5 et les utiliser dans des expressions ultérieures. splot est la commande qui permet de tracer des surfaces. Elle s'emploie en grande partie comme plot.
Si vous avez une version de gnuplot intégrant le patch gpmouse (ce qui devrait être le cas), vous pouvez changer l'angle de vue en cliquant (bouton gauche) dans la fenêtre de tracé, et en "tirant" la surface à l'aide de la souris. Si c'est trop lent, utilisez le bouton droit : seul le cadre tournera, et la surface ne sera redessinée que quand vous lacherez le bouton.
Reste que le graphe obtenu n'est pas très beau : la surface est représentée comme un réseau de courbes de même x et même y (iso-courbes), régulièrement espacées, mais toutes les lignes sont visibles, ce qui donne un aspect "fil de fer" peu satisfaisant. Heureusement, il est possible de spécifier un affichage prenant en compte les lignes cachées :
gnuplot> set hidden3d gnuplot> set isosamples 30,30 gnuplot> replot
set hidden3d active le mode de représentation des lignes
cachées, et isosamples est le paramètre fixant le nombre de
lignes tracées dans chaque direction (ici 30x30). replot
permet de refaire le dernier tracé, en prenant en compte les nouveaux
paramètres. Il permet aussi de rajouter des précisions sur le tracé,
comme une nouvelle fonction. On peut par exemple rajouter un bout de
paraboloïde qui intersecte notre ondulation :
g(x,y)=r(x,y)**2/100 -1; replot g(x,y).
L'autre grande utilisation de gnuplot est le tracé de courbes de données "expérimentales", contenues dans un fichier Ascii.
Créons avec un éditeur de texte un simple fichier population.dat contenant par exemple les huit lignes :
#an pingouins gnous 1970 1230 256 1975 987 320 1980 518 350 1985 780 302 1990 1024 150 1995 1250 281 2000 1580 520
censé représenter l'évolution de la population mondiale de gnous et de pingouins de 1970 à 2000. La première ligne, commençant par un # est un commentaire.
gnuplot> plot [*:*] [0:1800] "population.dat" title "pingouins" with linespoints gnuplot> replot "population.dat" using 1:3 title "gnous" with linespoints
La première commande trace le graphe de la colonne 2 en fonction de la colonne 1. C'est le comportement par défaut lorsqu'il y a au moins deux colonnes (voir help plot fichier). On a précisé l'intervalle des ordonnées, 0-1800, pour bien encadrer les données, mais on laisse gnuplot déterminer automatiquement l'intervalle des abscisses à partir du fichier, par l'indication [*:*]. On précise également un titre pour la courbe, "pingouins", et le style de tracé, linespoints, qui marque les données par des points, et les relie par des segments de droite.
La deuxième commande rajoute au tracé (replot) le graphe de la colonne 3 en fonction de la colonne 1.
Nous pouvons nous attaquer à plus compliqué : créons le fichier ombro-athenes.dat contenant :
#mois préc.(mm) temp.(°C) Jan 65 10 Fév 38 11 Mar 22 15 Avr 20 18 Mai 18 20 Jun 10 23 Jui 08 26 Aou 10 28 Sep 15 24 Oct 55 18 Nov 58 17 Déc 78 12
Nous allons créer un script trace-ombro.gp qui permet de tracer le graphe correspondant :
# Graphe ombro-thermique : P(mm) ~ 2*T(°C)
#
# grille de fond
set title "Courbe ombro-thermique d'Athènes"
set grid
# mois sur axe des x
set xtics border ("Jan" 0, "Fév" 1, "Mar" 2, "Avr" 3, "Mai" 4,"Jun" 5,"Jui" 6, "Aou" 7,"Sep" 8,"Oct" 9,"Nov" 10,"Déc" 11)
# précipitations : histogramme
set ylabel "P(mm)"
plot [-1:13] [0:90] 'ombro-athenes.dat' using 2 title "précipitations" with boxes
# températures : courbe
set y2label "T(°C)"; set y2tics
set y2range [0:45]
replot 'ombro-athenes.dat' using 3 axes x1y2 title "températures" with linespoints
pause -1 "Faire retour"
Ce script peut être lancé de deux manières : soit en mode interactif, en tapant load "trace-ombro.gp" à l'invite de gnuplot, soit en mode "batch", en invoquant directement gnuplot trace-ombro.gp. Voir help batch.
Dans ce mode, gnuplot exécute les commandes du fichier, puis termine directement. D'où l'utilité de la commande pause à la fin qui lui intime d'attendre une action de l'utilisateur.
Les premières commandes sont d'ordre esthétique : titre (set title), grille en fond de graphique (set grid). La commande set xtics permet en outre de fixer des graduations arbitraires pour l'axe des x (ici les mois), avec leur correspondance numérique (de 0 à 11).
Le premier tracé (plot) concerne la deuxième colonne de données (using 2), avec un style boxes, qui correspond à un histogramme. Le deuxième tracé (replot) est plus nouveau : nous devons définir un axe secondaire y2, deuxième axe vertical, placé à droite, avec ses nom et graduations (set y2label, set y2tics). De même, il existe aussi un axe horizontal secondaire x2 placé en haut, paramétrable de la même façon. On indique alors à replot d'utiliser ce deuxième axe (axes x1y2) pour tracer la troisième colonne de données, sous forme d'une courbe.
En tout, 4 systèmes de coordonnées sont utilisables : x1y1 (par défaut), x1y2, et (plus rares) x2y1, x2y2.
Nous avons vu quelques unes des fonctionnalités de gnuplot, mais il en existe bien d'autres, qui sont toutes documentées en ligne. Le seul problème pour les utiliser est parfois de savoir qu'elles existent. En voici quelques unes, parmi les plus utiles, avec la commande à taper pour obtenir l'aide :
![]() | ![]() | ![]() | Gnuplot |