Logiciels libres et enseignement

Favoriser l’usage de logiciels libres et de formats ouverts

- Auteur :L’équipe de Gnuplot

  • Licence : Libre sous restrictions. Les sources sont disponibles, mais toute modification doit être diffusée sous forme de patch par rapport à la version officielle. Contrairement à ce que son nom peut laisser croire, gnuplot n’est pas issu du projet GNU, et il n’est pas sous GPL.
  • Langue : Anglais, français : le logiciel est en anglais (les commandes), mais toute la documentation et l’aide en ligne sont traduites, voir plus bas.
  • Environnement requis : linux
  • Site web : http://www.gnuplot.info/
  • Version testée : 3.7.1 (dernière stable) + patch gpmouse

Usages pédagogiques

  • Représentations de fonctions d’une et deux variables (maths)
  • Graphes de mesures (sciences expérimentales, géographie, économie...)

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é9es 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)

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 no{commande}, 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)

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

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

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%2" 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.

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 :

  • exécution de scripts gnuplot help load, help call
  • changement de terminal et impression de tracés help set term, help set output
  • tracés d’histogrammes, de barres d’erreurs, de graphes financiers, etc. help style
  • ajustement de paramètres d’une fonction pour coller à un résultat expérimental (Levenberg-Marquardt) help fit
  • et beaucoup d’autres à découvrir...

Recherche avancée