TP Gnuplot - Université de Strasbourg
TP Gnuplot - Université de Strasbourg
TP Gnuplot - Université de Strasbourg
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