24.06.2013 Views

TP Gnuplot - Université de Strasbourg

TP Gnuplot - Université de Strasbourg

TP Gnuplot - Université de Strasbourg

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Université</strong> <strong>de</strong> <strong>Strasbourg</strong><br />

Environnements Informatique Feuille <strong>de</strong> <strong>TP</strong><br />

1 <strong>Gnuplot</strong><br />

Introduction à <strong>Gnuplot</strong><br />

<strong>Gnuplot</strong> est un logiciel permettant d’effectuer le tracer <strong>de</strong> courbes en 2D ou en 3D. Ces courbes<br />

peuvent être la représentation <strong>de</strong> courbes mathématique ou d’échantillons issues <strong>de</strong> diverses mesures.<br />

Les données utilisées par gnuplot pour tracer les courbes peuvent provenir soit <strong>de</strong> données stockées<br />

dans un fichier, soit <strong>de</strong> l’évaluation d’une fonction mathématique à une ou <strong>de</strong>ux variables.<br />

Les courbes générées par gnuplot peuvent être visualisées sous différents formats : directement dans<br />

une fenêtre (comportement par défaut) ou à partir d’un fichier image généré par gnuplot. Une gran<strong>de</strong><br />

variété <strong>de</strong> formats sont ainsi disponibles :<br />

• format bitmap : png, gif, jpg, ... ;<br />

• format vectoriel : eps, svg, ... ;<br />

• fichier <strong>de</strong> comman<strong>de</strong>s LATEX.<br />

Le logiciel gnuplot s’utilise en ligne <strong>de</strong> comman<strong>de</strong>s. Pour <strong>de</strong>s questions pratique, il est également<br />

possible d’utiliser <strong>de</strong>s fichiers script, contenant une suite d’instructions gnuplot, permettant d’automatiser<br />

la génération <strong>de</strong>s courbes.<br />

2 Premiers pas<br />

Pour lancer le logiciel, dans un terminal taper la comman<strong>de</strong> gnuplot. Le shell du logiciel se lance<br />

et attend vos comman<strong>de</strong>s <strong>de</strong> tracer <strong>de</strong> courbe.<br />

À tout moment vous pouvez interroger l’ai<strong>de</strong> en ligne en tapant la comman<strong>de</strong> help suivie du<br />

nom d’une comman<strong>de</strong>. Vous pouvez également consulter l’ai<strong>de</strong> disponible sur le site <strong>de</strong> gnuplot :<br />

http://gnuplot.sourceforge.net.<br />

Pour quitter le programme, vous pouvez utiliser la comman<strong>de</strong> exit.<br />

Pour réinitialiser le programme, vous pouvez utiliser la comman<strong>de</strong> reset.<br />

Pour tracer <strong>de</strong>s fonctions, il faut, dans un premier temps, les définir. Pour définir une fonction, la<br />

syntaxe est la suivante :<br />

() = ;<br />

Exemple :<br />

f(x) = 2*x + 3;<br />

Pour tracer la courbe, il faut utiliser la comman<strong>de</strong> plot suivie du nom <strong>de</strong> la fonction. Pour tracer la<br />

fonction f précé<strong>de</strong>nte, on utilisera la comman<strong>de</strong> suivante :<br />

plot f(x);<br />

2.1 Tracés simples<br />

Exercice 1<br />

Tracer les courbes d’équations suivantes :<br />

• f(x) = 2x + 4<br />

1


• g(x) = x2 + 2x + 1 (la puissance est notée ** en gnuplot)<br />

• h(x) = 2xsin( πx<br />

2 ) (la fonction sinus est prédéfinie dans gnuplot et est notée sin, la variable π<br />

est simplement notée pi)<br />

Il est possible <strong>de</strong> tracer plusieurs fonctions à la fois. Il suffit d’appeler la comman<strong>de</strong> plot et donner<br />

la liste <strong>de</strong>s fonctions. Chaque nom <strong>de</strong> fonction est séparé par une virgule.<br />

Exercice 2<br />

Tracer dans une seule fenêtre les trois fonctions f,g,h.<br />

2.2 Paramètres <strong>de</strong> tracé <strong>de</strong>s courbes<br />

Il est également possible <strong>de</strong> modifier certains paramètres <strong>de</strong> tracés (utiliser <strong>de</strong>s points au lieu <strong>de</strong> ligne,<br />

changé la couleur, la légen<strong>de</strong> <strong>de</strong> la courbe, ...).<br />

Par exemple, la comman<strong>de</strong> suivante :<br />

plot f(x) with points title "courbe 1";<br />

permet <strong>de</strong> tracer la courbe f avec <strong>de</strong>s points, en donnant comme légen<strong>de</strong> à la courbe, le nom “courbe 1”.<br />

L’option linewidth 2.0 permet <strong>de</strong> doubler l’épaisseur <strong>de</strong> la ligne. pointsize 2.0 permet<br />

<strong>de</strong> doubler la taille <strong>de</strong>s points.<br />

Exercice 3<br />

Tracer les courbes précé<strong>de</strong>nte en modifiant le type <strong>de</strong> tracé. Utiliser les types suivants et comparer<br />

les résultats : lines, points, linespoints, impulses, dots, steps, fsteps, histeps, ...<br />

Essayer également <strong>de</strong> tracer les courbes en modifiant la légen<strong>de</strong> <strong>de</strong> la courbe et l’épaisseur <strong>de</strong> tracé<br />

<strong>de</strong> la courbe.<br />

2.3 Paramètres généraux <strong>de</strong> tracé<br />

Les réglages précé<strong>de</strong>nts ne s’applique qu’à la courbe courante. Il est possible d’appliquer les options<br />

<strong>de</strong> tracé à toutes les courbes tracées par la suite.<br />

Ces réglages généraux s’effectuent via la comman<strong>de</strong> set. Sa syntaxe est la suivante : set<br />

.<br />

Par exemple, la comman<strong>de</strong> :<br />

set xrange [-15:15];<br />

permet <strong>de</strong> régler l’échelle <strong>de</strong>s x <strong>de</strong> −15 à 15. Vous pouvez remplacer une borne <strong>de</strong> cet intervalle par *,<br />

ce qui laisse le logiciel gnuplot choisir la valeur.<br />

Pour réinitialiser la valeur <strong>de</strong> tous ces réglages (ie. revenir aux réglages par défaut du logiciel), vous<br />

pouvez utiliser la comman<strong>de</strong> reset ;<br />

Exercice 4<br />

Tracer la courbe g en réglant l’axe <strong>de</strong>s x dans l’intervalle [−20;20] et l’axe <strong>de</strong>s y <strong>de</strong> 0 à une valeur<br />

fixée par gnuplot.<br />

La comman<strong>de</strong> set permet également d’ajouter un titre sur le tracé et sur les axes.<br />

Exercice 5<br />

Grâce à la comman<strong>de</strong> help set, rechercher les options <strong>de</strong> set permettant <strong>de</strong> modifier le titre du<br />

graphique et le label <strong>de</strong>s axes x et y. Utiliser ces options pour donner un titre au graphique et <strong>de</strong>s labels<br />

aux axes.<br />

2


3 Courbe 3D<br />

3.1 Tracé <strong>de</strong> base<br />

De façon analogue à plot, la fonction splot permet <strong>de</strong> tracer <strong>de</strong>s courbes 3D.<br />

Exercice 6<br />

Tracer les courbes d’équations suivantes :<br />

• f(x,y) = 2x + 3y + 2<br />

• g(x,y) = x 2 + y 2 − 2x + y + 1<br />

• h(x,y) = sin(x) + 2 · cos(x + y)<br />

La comman<strong>de</strong> splot accepte également différents paramètres pour modifier le style du tracé, le<br />

nom <strong>de</strong>s courbes, etc.<br />

Exercice 7<br />

Utiliser la comman<strong>de</strong> help pour trouver ces différents styles. Essayer en quelques uns.<br />

Faire <strong>de</strong> même pour renommer les courbes.<br />

3.2 Quelques options <strong>de</strong> tracé<br />

Il existe également <strong>de</strong>s options globales pour tracer les courbes <strong>de</strong> 3D, activables et réglables via<br />

la comman<strong>de</strong> set (i<strong>de</strong>m aux courbes 2D). Parmi ces options, il en existe une pour afficher ou non les<br />

parties masquées d’une vue 3d. Cette option est l’option hid<strong>de</strong>n3D activable via la comman<strong>de</strong> :<br />

set hid<strong>de</strong>n3d;<br />

et se désactive avec la comman<strong>de</strong> :<br />

unset hid<strong>de</strong>n3d;<br />

Exercice 8<br />

Comparer le tracé <strong>de</strong> la courbe h en activant et en désactivant l’affichage <strong>de</strong>s parties masquées.<br />

Faire <strong>de</strong> même pour le tracé <strong>de</strong>s trois courbes en même temps.<br />

Il est possible <strong>de</strong> modifier la finesse avec laquelle les courbes sont tracées. Pour cela, il faut modifier<br />

la fréquence d’échantillonnage <strong>de</strong>s courbes. La comman<strong>de</strong> set isosamples permet <strong>de</strong> régler la fréquence<br />

d’échantillonnage. Elle est suivie du nombre d’échantillons à prendre sur l’axe <strong>de</strong> x et le nombre<br />

d’échantillons sur l’axe <strong>de</strong>s y. Exemple :<br />

set isosamples 10,10;<br />

Exercice 9<br />

Tracer les courbes associées à f, g et h pour différentes valeurs d’échantillonnage :<br />

• 10,10<br />

• 20,10<br />

• 10,20<br />

• 20,20<br />

Exercice 10<br />

Activer l’option set contour. Tracer la courbe h.<br />

Que fait l’option set contour ?<br />

I<strong>de</strong>m en activant l’option set grid.<br />

3


3.2.1 Couleur<br />

Il est également possible <strong>de</strong> colorer les surfaces tracées. Pour cela, il faut utiliser la comman<strong>de</strong> :<br />

set pm3d;<br />

Exercice 11<br />

Tracer la courbe h en couleur.<br />

Les couleurs peuvent être modifiées via la comman<strong>de</strong> set palette <strong>de</strong>fined (). Exemple avec un dégradé <strong>de</strong> couleurs prédéfinies par gnuplot :<br />

set palette <strong>de</strong>fined (0 "red", 1 "blue", 2 "green", 3 "dark-yellow");<br />

Exercice 12<br />

Essayer <strong>de</strong> tracer la courbe h avec différents dégradés <strong>de</strong> couleurs.<br />

3.3 Espace paramétrique<br />

Jusqu’à présent les fonctions définies l’étaient pour un tracé avec <strong>de</strong>s coordonnées cartésiennes. Il<br />

est possible d’indiquer à gnuplot <strong>de</strong> fonctionner avec <strong>de</strong>s coordonnées paramétriques. Ainsi, il existe la<br />

comman<strong>de</strong> :<br />

set parametric;<br />

Dans ce mo<strong>de</strong> <strong>de</strong> fonctionnement, les variables <strong>de</strong>s fonctions ne seront plus nommées x et y mais u et v.<br />

Exercice 13<br />

Tracer les courbes 3D d’équations suivantes (coordonnées paramétriques), en utilisant les paramètres<br />

données à chaque équation et en désactivant l’affichage <strong>de</strong>s parties masquées :<br />

1.<br />

2.<br />

f(u,v) = (1 − 0.2 · cos(v)) · cos(u)<br />

g(u,v) = (1 − 0.2 · cos(v)) · sin(u)<br />

h(u,v) = 0.2 · sin(v)<br />

avec u ∈ [0.00000;6.28319], v ∈ [0.00000;6.28319] et z ∈ [−1.00000;1.00000].<br />

f(u,v) = (1 − 0.1 · cos(v)) · cos(u)<br />

g(u,v) = (1 − 0.1 · cos(v)) · sin(u)<br />

h(u,v) = 0.1 · (sin(v) + u<br />

− 10)<br />

1.7<br />

avec u ∈ [0;10π], v ∈ [0;10π] et z réglée automatiquement par gnuplot 1 . Utiliser comme échantillonnage<br />

le couple (100,20).<br />

1 Pour cela vous pouvez utiliser la comman<strong>de</strong> set autoscale z.<br />

4


3.<br />

f(u,v) = cos(u) + 0.5cos(u) ˙ · cos(v)<br />

g(u,h) = sin(u) + 0.5 · sin(u) · cos(v)<br />

h(u,v) = 0.5 · sin(v)<br />

i(u,v) = 1 + cos(u) + 0.5 · cos(u) · cos(v)<br />

j(u,v) = 0.5 · sin(v)<br />

k(u,v) = sin(u) + 0.5 · sin(u) · cos(v)<br />

Tracer les fonctions h et k avec <strong>de</strong>s lignes. Tracer toutes les fonctions avec un échantillonnage <strong>de</strong><br />

(50,20), avec u ∈ [−π;π], v ∈ [−π;π] et z réglé automatiquement par gnuplot.<br />

4 Tracés à partir <strong>de</strong> fichiers <strong>de</strong> données<br />

Les courbes tracées jusqu’à présent sont obtenues à partir <strong>de</strong> l’évaluation d’une équation <strong>de</strong> courbe.<br />

Avec gnuplot il est possible <strong>de</strong> tracer <strong>de</strong>s graphiques à partir <strong>de</strong> données stockées dans <strong>de</strong>s fichiers. On<br />

peut ainsi produire différents types <strong>de</strong> graphiques.<br />

Pour tracer <strong>de</strong>s données à partir <strong>de</strong> fichiers, il faut remplacer dans l’appel <strong>de</strong> la comman<strong>de</strong> plot ou<br />

splot les références à une définition <strong>de</strong> fonction par un nom <strong>de</strong> fichier (chemin complet vers le fichier)<br />

où se trouvent les données.<br />

Un exemple <strong>de</strong> fichier <strong>de</strong> données est donné par le fichier data1.dat. Dans ces fichiers, une<br />

colonne représente un type <strong>de</strong> données (un type <strong>de</strong> mesure) et chaque ligne représente les valeurs <strong>de</strong><br />

chaque mesures. La première ligne peut contenir un intitulé <strong>de</strong>s données. Dans ce cas, il faudra mettre<br />

cette chaîne <strong>de</strong> caractères entre " ".<br />

Pour tracer son contenu, il faut utiliser la comman<strong>de</strong> :<br />

plot ’data1.dat’ using 1:xtic(1) title column with lines, ’’ using 2 title<br />

column with lines, ’’ using 3 title column with lines;<br />

Avec ce tracé, chaque courbe correspond à une colonne dans le fichier <strong>de</strong> données et chaque ligne<br />

correspond à une valeur sur l’axe <strong>de</strong>s y. xtic permet <strong>de</strong> spécifier la colonne <strong>de</strong> valeurs à utiliser pour<br />

l’axe <strong>de</strong>s x.<br />

Pour que cette comman<strong>de</strong> fonctionne, il faut que le fichier contenant les données soit accessible par<br />

gnuplot. Deux solutions s’offrent à vous pour l’accès <strong>de</strong> gnuplot à ce fichier :<br />

1. Donner explicitement le chemin complet vers le fichier.<br />

2. Déplacer gnuplot vers le répertoire contenant ce fichier. À partir <strong>de</strong> la ligne <strong>de</strong> comman<strong>de</strong> gnuplot,<br />

il est possible d’utiliser les comman<strong>de</strong>s pwd et cd qui ont le même comportement que dans un<br />

shell.<br />

Exercice 14<br />

Tracer les courbes en utilisant la comman<strong>de</strong> donnée précé<strong>de</strong>mment.<br />

À l’ai<strong>de</strong> <strong>de</strong> la comman<strong>de</strong> help et <strong>de</strong> la documentation sur le site web <strong>de</strong> gnuplot, essayer <strong>de</strong> comprendre<br />

à quoi correspon<strong>de</strong>nt les différentes options utilisées dans cette comman<strong>de</strong>. N’hésiter pas à les<br />

modifier pour comprendre et vérifier leur comportement.<br />

5


4.1 Styles <strong>de</strong> tracés<br />

De façon analogue aux styles <strong>de</strong> tracés <strong>de</strong>s fonction, il existe les même possibilité <strong>de</strong> tracé pour les<br />

données.<br />

Exercice 15<br />

Tracer les données précé<strong>de</strong>ntes en changeant le style. Utiliser les styles cités à l’Exercice 3.<br />

Essayer également les styles boxes et histograms.<br />

4.1.1 Style candlesticks<br />

Vous pouvez tracer un graphique en utilisant le style can<strong>de</strong>lsticks. Ce style <strong>de</strong> tracé nécessite 5<br />

données par échantillon. Par exemple, le fichier data2.dat peut être tracé par :<br />

plot ’data2.dat’ using 1:3:2:6:5 with candlesticks<br />

Exercice 16<br />

Essayer ce tracé. Déterminer quelle est l’influence <strong>de</strong>s différentes données pour un échantillon.<br />

4.1.2 Histogrammes<br />

Pour tracer <strong>de</strong>s histogrammes, il faut dans un premier temps activer le mo<strong>de</strong> <strong>de</strong> tracer <strong>de</strong>s histogramme<br />

via la comman<strong>de</strong> :<br />

set style data histograms<br />

puis régler le type d’histogramme que l’on souhaite tracer via la comman<strong>de</strong> set style histogram<br />

.<br />

Exercice 17<br />

Essayer la comman<strong>de</strong> suivante :<br />

set style data histograms;<br />

set style histogram clustered;<br />

plot ’data2.dat’ using 1, ’’ using 2, ’’ using 3;<br />

Exercice 18<br />

En utilisant le fichier data3.dat, essayer <strong>de</strong> tracer l’histogramme avec barre d’erreurs suivant :<br />

6


14<br />

12<br />

10<br />

8<br />

6<br />

4<br />

2<br />

’data3.dat’ using 1:2<br />

’’ using 3:4<br />

’’ using 5:6<br />

0<br />

-2 0 2 4 6 8 10<br />

Exercice 19<br />

Tracer l’histogramme suivant. Attention à bien remplir les barres <strong>de</strong> l’histogramme et à modifier la<br />

position <strong>de</strong> la légen<strong>de</strong> (key).<br />

16<br />

14<br />

12<br />

10<br />

5 Format <strong>de</strong> sorties<br />

8<br />

6<br />

4<br />

2<br />

’data3.dat’ using 1<br />

’’ using 2<br />

’’ using 3<br />

0<br />

-2 0 2 4 6 8 10<br />

Il possible d’enregistrer les tracés produits par gnuplot dans <strong>de</strong>s fichiers images. Il suffit <strong>de</strong> définir<br />

un terminal <strong>de</strong> sortie.<br />

7


Pour afficher la liste <strong>de</strong>s terminaux disponibles, il suffit <strong>de</strong> taper la comman<strong>de</strong><br />

set terminal<br />

Si la sortie doit s’effectuer dans un fichier. On peut spécifier le nom du fichier via la comman<strong>de</strong> set<br />

output .<br />

Pour s’assurer <strong>de</strong> la bonne écriture du fichier, il faut appeler, après le <strong>de</strong>ssin, la comman<strong>de</strong> :<br />

set output<br />

Exercice 20<br />

Essayer <strong>de</strong> générer le tracé d’une courbe dans un fichier <strong>de</strong> type png.<br />

8

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!