WIMSFiches introductivesPari GPGnuplot

Gnuplot

Usages pédagogiques

Prise en main

Démarrage

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).

Aide en ligne et options

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)

Sinusoïde sur l'intervalle [-3pi;3pi]

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.

set,show et les paramètres de gnuplot

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.

Élargissons l'horizon...

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)

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

Surface avec lignes cachées

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).

Tracé de courbes de données

L'autre grande utilisation de gnuplot est le tracé de courbes de données "expérimentales", contenues dans un fichier Ascii.

Courbes simples : des pingouins et des gnous...

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

Pingouins & Gnous

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.

Graphes composites : le climat d'Athènes

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.

Courbe ombro-thermique d'Athènes

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.

Fonctions avancées

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 :


Des commentaires, des remarques, des envies de contribuer ?
=> Contactez OFSET (ofset@ofset.org) ou rejoignez la liste de diffusion de freeduc-cd

WIMSFiches introductivesPari GPGnuplot