Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page Généralités Notice Gnuplot Gnuplot est un logiciel graphique pouvant fonctionner au choix en ligne de commande ou en fichier de commandes. En général, dès qu on a plus de deux ou trois commandes à écrire, le mode fichier de commandes est plus pratique parcequ il garde en mémoire de façon directement ré-exploitable tout ce qui a été fait.. Fonctionnement en ligne de commande Sur la ligne de commande Linux écrire : gnuplot Une nouvelle invite s affiche qui est celle de Gnuplot : gnuplot> à partir de laquelle on peut écrire des commandes Gnuplot. Par exemple : gnuplot>plot [-pi :pi] sin(x) trace la fonction sin(x) dans l intervalle [ π, π] 2. On peut ensuite continuer en écrivant d autres commandes : gnuplot> Quand c est fini, pour quitter Gnuplot : gnuplot>quit Remarque Dans le mode ligne on peut rappeler les commandes par les flèches et..2 Fonctionnement en fichier de commandes On écrit d abord toute les commandes Gnuplot dans un fichier, puis on les fait exécuter séquentiellement comme les instructions d un programme C. Il n y a plus d interactivité. On écrit donc dans un fichier, nommé par exemple courbe.gnu : plot [-pi:pi] sin(x) puis, sur la ligne de commande Linux : gnuplot courbe.gnu et toutes les commandes Gnuplot sont alors exécutées. Le est indispensable pour que le graphique reste affiché à l écran jusqu à ce que l utilisateur le fasse disparaître par un Return 3. Dans toute la suite le sera presque toujours sous-entendu. Tout ce qui suit un # sur une ligne est considéré comme un commentaire. Une commande peut s étendre sur plusieurs lignes en terminant chaque ligne 4 par un \. Remarque On peut aussi utiliser un fonctionnement mélangeant ligne de commande et fichier de commandes en utilisant la commande load..3 Aide en ligne Dans le mode ligne de commande on peut accéder à une aide générale en faisant : gnuplot>help et à une aide pour une commande particulière, par exemple plot : gnuplot>?plot Ne pas confondre ligne de commande et fichier de commandes Linux d une part, ligne de commande et fichier de commandes Gnuplot d autre part 2 Contrairement au C Gnuplot connaît la valeur de π 3 pause n où n est un réel positif fait s afficher le graphique durant n secondes 4 sauf la dernière, évidemment
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page 2.4 Notice HTML Il existe un site où se trouvent de nombreux renseignements sur Gnuplot, à l adresse : www.gnuplot.info en particulier une notice écrite en HTML, également lisible en faisant directement : notice gnuplot qui n est qu une abréviation pour : mozilla /home/enseignement/naulin/gnuplot/gnuplot-fr.html & Quelques renseignements utiles peuvent être obtenus en écrivant : man gnuplot sur la ligne de commande Linux..5 Abréviations de commande On peut n écrire que le début d une commande s il n y a pas ambigüité avec une autre commande, par exemple, au lieu de : using with lines on peut se limiter à : u w l mais pour écrire : xrange il faut au moins : xr car il existe aussi xlabel..6 Commande Linux à partir de Gnuplot On peut lancer une commande Linux à partir de Gnuplot en la faisant précéder d un point d exclamation :!cp ficha fichb 2 Tracé de courbes et de surface Gnuplot peut tracer des courbes et des surfaces, soit à partir de leurs équations, soit à partir de points dont les coordonnées sont fournies par l utilisateur. 2. A partir des équations 2.. Courbe plane à partir d une équation de la forme y = f(x) plot sin(x) Attention : par défaut la variable doit s appeler x. Gnuplot choisit lui même un intervalle de variation de x. Si on veut imposer cet intervalle : plot [-pi :pi] sin(x) La syntaxe des formules est la même qu en Fortran 5. Si on veut, par exemple, écrire x 2 sinx : plot [- :] x**2*sin(x) Si on veut utiliser plusieurs fois une même expression on peut définir une fonction : f(x)=x**2*sin(x) plot[- :] f(x) plot[- :] exp(-x)*f(x) 5 Voisine de celle du C 2
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page 3 2..2 Courbe plane à partir de ses équations paramétriques set parametric plot [ :2*pi] 2*cos(t), sin(t) Le paramètre doit s appeler t. On peut imposer aussi des limites sur x et y : set parametric plot [ :2*pi] 2*cos(t), sin(t) Pour sortir du mode parametric : set noparametric 2..3 Courbe plane en polaire : ρ = f(θ) set polar plot [ :*pi] /t L angle θ doit s appeler t. Pour sortir du mode polaire : set nopolar. 2..4 Surface à partir d une équation de la forme z = f(x, y) Pour tracer la surface d équation z = x 2 y 2 : set isosamples 3,4 permet d obtenir un réseau de points sur la surface de 3 par 4 points ( par par défaut) splot x**2-y**2 On peut ajouter, pour masquer les parties cachées : set hidden3d x**2-y**2 8 6 4 2-2 -4-6 -8 - - -5 5 5-5 - Fig. Les variables doivent s appeler x et y. On peut définir une fonction de x et une fonction de y comme dans le cas d une courbe plane. De façon générale on peut toujours définir une fonction. Pour représenter des courbes de niveau, voir la section s y rapportant. 2..5 Surface à partir de ses équations paramétriques set hidden3d set parametric splot [:2*pi] [:2*pi] sin(u)*cos(v), sin(u)*sin(v), sin(u)**2 3
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page 4 sin(u)*cos(v), sin(u)*sin(v), sin(u)**2.8.6.4.2 - -.8 -.6 -.4 -.2.2.4.6.8.2.4 -.8-.6-.4-.2 -.6.8 Fig. 2 Les paramètres doivent s appeler u et v. 2..6 Définition de variables et de fonctions On peut définir des variables (qui n ont pas besoin d être déclarées) et écrire des expressions avec les opérateurs et les règles du C. On peut également définir et utiliser des fonctions (cinq variables maximum) de façon très simple. Exemple : a = 2 f(x) = sin(w*x) plot w =.2, f(x), w =.4, f(x) delta(t) = (t == ) ramp(t) = (t > )? t : min(a,b) = (a < b)? a : b len3d(x,y,z) = sqrt(x*x+y*y+z*z) Il existe de nombreuses fonctions mathématiques prédéfinies, on peut utiliser les nombres complexes. 2.2 Tracés de courbes et de surfaces à partir de données numériques Pour être utilisées par Gnuplot ces données numériques doivent être placées dans un fichier. 2.2. Exemple simple On suppose qu un programme C, par exemple, a permis de calculer numériquement les coordonnées d une série de points d une courbe que l on désire tracer. Les valeurs de ces coordonnées ont été écrites dans le fichier lorentz.dat qui se présente de la manière suivante : -2.5.3793-2.45.4286-2.4.47929-2.35.5335 2.5.3793 4
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page 5 Chaque ligne correspondant aux coordonnées x et y d un point. Gnuplot peut tracer ces points à l aide des commandes suivantes : plot lorentz.dat lorentz.dat.9.8.7.6.5.4.3.2. -3-2 - 2 3 Fig. 3 ou : plot lorentz.dat with lines si l on veut que les points soient joints par des segments. lorentz.dat.9.8.7.6.5.4.3.2. -3-2 - 2 3 Fig. 4 2.2.2 Organisation des fichiers de données numériques De façon générale un fichier de données numériques pour Gnuplot se présente sous la forme d une suite de matrices de nombres disposées verticalement (dans l exemple précédent il y a une seule matrice ayant autant de lignes qu il y a de points à tracer et deux colonnes). On appelle ces matrices des «blocs». Deux blocs se succédant sont séparés soit par une, soit par plusieurs lignes blanches, ces deux cas ayant des significations différentes qui seront vues lors de leur utilisation. Exemple de blocs séparés par une ligne blanche :.8.9965.5365.9923.2.7.8843.9477.69.8383.722.885..8528.437.833.2822.479.964.5954.848.259.738.275.2964.7694.44.929.6739.9762.324.4957.4343.4288.2975.2387.4595.8773.9595.8692 Exemple de blocs séparés par deux lignes blanches :.4959.736.773.247.2662.8272 5
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page 6.675.649.759.6454.37.5237.8396.4466.66.996.658.3337.55.979.49.6486.43.736.757.5552.468.9839.3235.6 Les nombres s écrivent avec les mêmes notations qu en C. Comme pour le fichier de commandes, toute ligne du fichier de données commençant par # est considérée comme un commentaire (à vérifier). Un fichier de données ne doit pas commencer par une ligne blanche. Remarque importante : Le fichier de données numériques doit contenir un nombre de points adapté à la résolution du tracé, même si la méthode de calcul de ces points en exige un nombre bien supérieur. 2.2.3 Exécution du tracé. Courbe dans le plan Supposons qu on place, dans le fichier donnees.dat un bloc de plus de deux colonnes, par exemple :.8.9965.5365.9923.2.7.8843.9477.69.8383.722.885..8528.437.833.2822.479.964.5954 Pour faire tracer la colonne 2 en fonction de la, comme dans l exemple simple précédent : plot donnees.dat with lines (les colonnes 3 à 5 sont ignorées). Pour faire tracer la colonne 2 en fonction de la avec des barres d erreur prises dans la colonne 3 (demi-largeur de la barre d erreur) : plot donnees.dat with errorbars (les colonnes 4 à 5 sont ignorées). Ceci ne trace que les points avec leurs barres d erreur sans les joindre par des segments. Si on veut joindre les points : plot donnees.dat with errorbars, donnees.dat with lines On peut aussi tracer des barres d erreur dissymétriques et en mettre sur l axe des x. Pour faire tracer la colonne 5 en fonction de la 3 : plot donnees.dat with lines using 3:5 Pour faire tracer la colonne 5 en fonction de la 3, avec des barres d erreur prises dans la colonne 2 et les points joints entre eux par des segments : plot donnees.dat using 3:5:2 with errorbars, donnees.dat using 3:5 with lines (On rappelle que ceci peut être abrégé en : plot donnees.dat u 3 :5 :2 w e, donnees.dat u 3 :5 w l) S il y a plusieurs blocs, séparés entre eux par une ou deux lignes blanches, une nouvelle courbe est tracée pour chaque bloc, sur le même graphe. Supposons par exemple que dans donnees.dat on ait : 6
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page 7.8.9965.5365.9923.2.7.8843.9477.69.8383.722.885..8528.437.833.2822.479.964.5954.848.259.738.275.2964.7694.44.929.6739.9762.324.4957.4343.4288.2975.2387.4595.8773.9595.8692.4959.736.773.5266.268.247.2662.8272.464.7466.675.649.759.86.843.6454.37.5237.563.694.8396.4466.66.8343.585.996.658.3337.856.6585.55.979.49.9737.426.6486.43.736.846.3665.757.5552.468.2787.93.9839.3235.6.9838.75.7442.5533.642.292.3272.4459.328.563.3239.247 Alors la commande : plot donnees.dat using 3:5 with lines trace cinq courbes (mais, inconvénient, avec les mêmes couleurs, pour y remédier voir ci-dessous). Si on ne veut que le bloc 3, par exemple, il faut que les blocs soient séparés par deux lignes blanches et ajouter index n- (les blocs sont numérotés à partir de ) : plot donnees.dat index 2 using 3:5 with lines 2. Courbe dans l espace On écrit un triplet de valeurs de x, y, z par ligne dans le fichier : et :.982287.8738.3.929776.36825.6.844328.535827.9.728969.684547.2 Résultat : splot courbe_3d.dat w l courbe_3d.dat 3 2.5 2.5.5.5 - -.5.5 - -.5 Fig. 5 7
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page 8 3. Surface On peut tracer une surface dont des points sont donnés par leurs coordonnées x, y, z, exprimées sous forme numérique. Le plus simple est que les x et y forment un réseau rectangulaire régulier, c est à dire être de la forme x i = x + i x, y j = y + j y, i variant de à m et j de à n, (i, j, m, n entiers). Dans ce cas il n est pas nécessaire de faire figurer les valeurs de x et y dans le fichier de données mais seulement les valeurs de z. Il y a deux façons possibles d écrire ces valeurs de z : a) 8.9656 <- valeur de z pour la première valeur de x et la première valeur de y 9.726 <- valeur de z pour la première valeur de x et la deuxième valeur de y.3427 <-.887.349 9.726 <- valeur de z pour la deuxième valeur de x et la première valeur de y.3633 <- valeur de z pour la deuxième valeur de x et la deuxième valeur de y.8432 <-.772.3753.3427 <- valeur de z pour la troisième valeur de x et la première valeur de y.8432 <- valeur de z pour la troisième valeur de x et la deuxième valeur de y.94 <-.3977.4679 (attention à la ligne blanche à chaque changement de valeur de x) On trace par : set hidden3d splot donnees.dat with lines et on obtient le résultat : surface.dat.5 -.5-5 5 2 25 3 35 4 45 45 5 4 35 3 25 2 5 5 5 Fig. 6 b) On peut aussi écrire les données dans le fichier de façon plus naturelle et plus compacte : 8
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page 9 8.9656 9.726.3427.887.349 <- valeurs de z pour la première valeur de x et tou 9.726.3633.8432.772.3753 <- valeurs de z pour la deuxième valeur de x et tou.3427.8432.94.3977.4679 <-.887.772.3977.4762.453 Il n y a plus de ligne blanche à mettre mais il faut mettre l option matrix dans le tracé : set hidden3d splot exemple_matrix.res matrix w l et on obtient le résultat : exemple_matrix.res matrix 6 5 4 3 2 2 4 6 8 2 4 2 4 6 8 2 4 Fig. 7 Il y a la possibilité de tracer aussi en coordonnées paramétriques. 2.2.4 Transformation des données numériques On veut tracer, à partir, par exemple, du fichier mes donnees.dat dont la colonne contient des valeurs (x i ) et la colonne 4 des valeurs (y i ), g(y i ) en fonction de f(x i ), g et f étant deux fonctions données : Remarque f(x)=x*x on définit f g(y)=log(y) on définit g plot mes donnees.dat u (f($)) :(g($4)) on trace, g(col.4) en fonction de f(col.) le signe $ et les parenthèses sont obligatoires Dans ce cas on pourrait écrire directement : plot mes donnees.dat u ($*$) :(log($4)) 2.2.5 Limite inférieure des nombres pris en compte Par défaut les nombres de valeur absolue inférieure à 8 sont pris égaux à zéro. Si, par exemple, toutes les valeurs correspondant à un axe sont telles, la mise à l échelle automatique rend la portée sur cet axe nulle. Il y a deux solutions :. Utiliser d autres unités 2. Ajouter, par exemple : set zero.e-5 seuls les nombres de valeur absolue inférieure à 5 seront pris égaux à zéro. 9
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page 3 Présentation des graphes 3. Dimension de la fenêtre d affichage set size.5,.5 Affiche dans un rectangle de côté horizontal égal à.5 fois la valeur par défaut, de côté vertical égal à.5 fois la valeur par défaut set size.72,. Affiche dans un carré, ce qui permet d obtenir des axes orthonormés à condition d imposer des intervalles identiques en x et y 3.2 Présentation des axes On peut ajouter des éléments de présentation tels que : set title Mon titre place le titre entre apostrophes au-dessus du graphe set time affiche heure et date dans le coin inférieur gauche de la fenêtre graphique set xlabel Ma grandeur en x label de l axe des x set ylabel Ma grandeur en y label de l axe des y set zlabel Ma grandeur en z label de l axe des z set key.3,7.8 pour faire figurer la légende à la position.3,7.8 set xrange [-.5 :7] impose des valeurs extrêmes en x set yrange [-pi :pi] impose des valeurs extrêmes en y set zrange [ :5.] impose des valeurs extrêmes en z set logscale x e échelle logarithmique en base e en x idem en y ou z set logscale x échelle logarithmique en base en x idem en y ou z set logscale xy e échelles logarithmiques en base e en x et y set logscale xy échelles logarithmiques en base en x et y idem avec yz, zx ou xyz set logscale x 5.7 échelles logarithmiques en base 5.5 en x etc. Tous les graphiques exécutés à la suite de ces commandes auront les mêmes éléments de présentation. Si on veut les supprimer pour la suite écrire : set notitle set noxlabel On peut revenir aux options par défaut grâce à la commande : reset 3.3 Présentation des tracés Pour obtenir des points seuls, des courbes, des barres d erreur : colonne avec barres d erreur de demi-longueur donnée en plot mes donnees.dat with points par défaut plot mes donnees.dat with lines chaque point est relié au suivant par un segment plot mes donnees.dat u :4 :5 with errorbars colonne 4 du fichier mes donnees.dat en fonction de la splot mes donnees 3d.dat with lines surface représentée en perspective par un maillage Le symbole associé à chaque point peut être choisi parmi 6 modèles (paramètre pt) La taille par défaut de ce symbole peut-être modifiée par un coefficient multiplicatif (paramètre ps) Les lignes peuvent être tracées selon 8 modèles différents qui se traduisent par des couleurs à l écran ou des styles de pointillés à l impression (paramètre lt) L épaisseur par défaut de ces lignes peut être modifiée par un coefficient multiplicatif (paramètre lw) Exemples :
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page plot mes donnees.dat w p pt 2 ps 3.5 tracé par points du modèle 2 de taille 3.5 fois la taille par défaut plot mes donnees.dat w l lt 4 lw 5 tracé par lignes du modèle 4 d épaisseur 5 fois l épaisseur par défaut 4 Divers 4. Superposition de plusieurs tracés Lorsqu on souhaite tracer plusieurs graphes dans les mêmes axes, on peut utiliser une des deux méthodes ci-dessous.. On utilise un fichier de données comprenant plusieurs blocs séparés d une ligne blanche : plot superposition.dat w l À chaque bloc est associé un tracé mais ils ont tous la même présentation (en particulier même couleur ou style de pointillé) et on ne peut pas ajouter de fonctions. superposition.dat 9 8 7 6 5 4 3 2 -.3 -.2 -...2.3 Fig. 8 2. On utilise un ou plusieurs fichiers de données comprenant plusieurs blocs séparés de deux lignes blanches et on peut ajouter des fonctions : plot superposition.dat index 4 w l,\ superposition_.dat index 9 w l,\ 8*cos(5*x)**2 w p pt 5 On obtient : # l anti-slash indique que la commande # continue à la ligne suivante 9 superposition.dat index 4 superposition_.dat index 9 8*cos(5*x)**2 8 7 6 5 4 3 2 -.3 -.2 -...2.3 Fig. 9 Remarques
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page 2 Il faut trouver des bornes communes à tous les tracés. Ces méthodes se transposent à trois dimensions. 4.2 Plusieurs graphes juxtaposés : l instruction multiplot Exemple : set multiplot set nokey set size.5,.5 set origin,.5 plot lulu.res u :2 w l, lulu.res u :3 w l, lulu.res u :8 w l, lulu.res u :9 w l set origin.5,.5 plot lulu.res u :4 w l, lulu.res u :5 w l set origin.,. plot lulu.res u :4 w l, lulu.res u :5 w l, lulu.res u : w l, lulu.res u : w l set origin.5,. plot lulu.res u :6 w l, lulu.res u :7 w l, lulu.res u :2 w l, lulu.res u :3 w l unset multiplot # indispensable Résultat : 5 5-5 -..2.3.4.5 4 35 3 25 2 5 5-5..2.3.4.5 9 8 7 6 5 4 3 2..2.3.4.5 3 2 - -2-3..2.3.4.5 Fig. 4.3 Courbes de niveau Ce qui suit s applique aussi bien aux surfaces définies par des expressions qu à celles définies par des points dans un fichier. set hidden3d set contour set cntrparam levels 2 set data style line splot courbes_de_niveau.dat # pour tracer les courbes de niveau dans le plan (x,y) # impose 2 l. de n. (équiréparties entre zmin et zmax) # (par défaut, il y en a ) 2
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page 3.4.3.2. -. -.2 -.3 -.4 -.5 -.6 courbes_de_niveau.dat.3.25.2.5..5-6.94e-7 -.5 -. -.5 -.2 -.25 -.3 -.35 -.4 -.45 -.5 -.55 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 Fig. Si on ne veut voir que les courbes de niveau : set contour set cntrparam levels 2 set data style line set nosurface set view, splot courbes_de_niveau.dat # pour ne voir que les lignes de niveau # permet de changer le point de vue sous lequel on regarde # la surface et les courbes de niveau 2 3 4 5 6 7 8 9.3.25.2.5..5-6.94e-7 9 -.5 -. 8 -.5 7 -.2 -.25 6 -.3 -.35 5 -.4 -.45 4 -.5 -.55 3 2 Fig. 2 4.4 Lissage de données On a, par exemple dans le plan, des points définis par leurs coordonnées x et y, avec des barres d erreurs sur y et on cherche la courbe d une famille caractérisée par une équation dépendant de paramètres qui s approche le mieux 3
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page 4 des points au sens des moindres carrés. On suppose les coordonnées des points et les barres d erreur écrites dans le fichier donnees a lisser.dat sous la forme : - 2 4.5 2 7 3 4.5 2 2 5 8 4.2 5.5 3 Si on cherche, par exemple, le polynôme du second degré lissant les points, on écrit : f(x)=a*x*x+b*x+c # définition de la fonction de lissage fit f(x) donnees_a_lisser.dat via a,b,c plot [-2:] [-2:6] f(x), donnees_a_lisser.dat w errorbars 6 4 f(x) donnees_a_lisser.dat 2 8 6 4 2-2 -2 2 4 6 8 Fig. 3 Dans le fichier donnees a lisser.dat les valeurs de x doivent être en première colonne, celles de y en seconde, les barres d erreur sur y en troisième, sinon il faut préciser les colonnes par un using n :n2 :n3. Si on utilise que deux colonnes les barres d erreurs sont prises toutes égales. Le lissage peut être non linéaire (par ex. (a+b*x*x)*exp(c*x*x)). 4.5 Insertion d un fichier de commandes par load La commande load permet d insérer un fichier de commandes n importe où, soit en mode ligne de commande, soit dans un second fichier de commandes. Soit, par exemple le fichier config c n.gnu contenant : set hidden3d set contour set cntrparam levels 2 set data style line On peut alors écrire en ligne de commande : gnuplot>load config_c_n.gnu gnuplot>splot courbes_de_niveau.dat ou dans un second fichier de commandes : load config_c_n.gnu splot courbes_de_niveau.dat 4
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page 5 4.6 La commande pause Il peut être intéressant de contrôler, lors d une séquence de tracés, le temps d affichage de chaque image. Si la commande pause n est placée après un plot ou un splot l affichage persiste n secondes. Si n vaut - l affichage demeure tant que l utilisateur n a pas appuyé sur la touche Entrée (ou Return). plot donnees_.dat pause 5 # le trace precedent reste affiche 5 secondes plot donnees_2.dat # le trace precedent reste affiche jusqu à ce que l utilisateur frappe la touch 4.7 Animation Prenons l exemple d une barre métallique assimilée à un segment de droite, portée à une température non uniforme. Si x est la coordonnée repérant les points de la barre, la température de la barre à un instant initial est une fonction T(x, ). Aux instants ultérieurs cette répartition de température va en général se modifier sous l effet de la conduction de la chaleur, et la température est une fonction de deux variables T(x, t). t, t 2, etc. étant différents instants successifs on suppose qu on a calculé des points de la fonction de x T(x, t ), de même pour la fonction T(x, t 2 ), etc. On a écrit ces points dans un fichier nommé eq chaleur implicite.dat sous la forme : x T à l instant t x 2 T 2 id. id. première ligne blanche seconde ligne blanche x 2 T 2 à l instant t 2 x 2 2 T 2 2 id. id. première ligne blanche seconde ligne blanche On peut faire afficher l ensemble de ces courbes sur un même graphe en écrivant : plot eq_chaleur_implicite_.dat w l ce qui donne : 4 eq_chaleur_implicite_.dat 2 8 6 4 2.2.4.6.8 Fig. 4 5
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page 6 mais on peut aussi faire afficher les courbes une par une à intervalles de temps réguliers pour représenter l évolution temporelle de la courbe de température en fonction du temps. Pour cela il faut écrire les deux fichiers suivants, nommés ici par exemple, dans l ordre, animation a.gnu et animation b.gnu : et set xrange [:] # il faut imposer des intervalles en x et y set yrange [:5] # communs à toutes les courbes i= imax= load animation_b.gnu plot eq_chaleur_implicite_.dat index i w l pause.2 i=i+ if (i<=imax) reread et faire exécuter l ensemble par : Remarque gnuplot animation a.gnu Il est nécessaire d utiliser deux fichiers parceque la commande reread renvoit obligatoirement au début du fichier de commande dans lequel elle est placée. Si les valeurs de x sont les mêmes pour toutes les courbes on peut organiser le fichier de données, nommé maintenant eq chaleur implicite 2.dat de façon plus compacte : x T T 2 T p x 2 T 2 T 2 2 T p 2 x n T n T 2 n T p n la première colonne contient les valeurs de x, la seconde les températures correspondantes à l instant t, la troisième les températures à l instant t 2, etc. Il faut modifier légèrement animation b.gnu : plot eq_chaleur_implicite_2.dat :i w l pause.2 i=i+ if (i<=imax) reread 4.8 La commande every Elle permet, lorsqu on utilise un fichier de données, de n utiliser qu un échantillonnage périodique de ces données. Dans la suite on appelle enregistrement ce qui, dans le programme C, a été écrit par un fprintf dont le format se termine par un \n, éventuellement précédé d un ou plusieurs fprintf dont le format ne se termine pas par un \n. Cela correspond généralement à une «ligne» dans le fichier mais pas toujours parcequ un enregistrement peut s étendre sur plusieurs lignes. La commande every s écrit avec six paramètres (au maximum) : plot mes_donnees.dat every incr_point:incr_bloc:point_debut:bloc_debut:point_fin:bloc_fin incr point, incr bloc, point debut, bloc debut, point fin, bloc fin sont des entiers. Les points à tracer sont sélectionnés parmi les données selon une boucle entre point debut et point fin avec l incrément incr point, et les blocs selon une boucle entre bloc debut et bloc fin avec l incrément incr bloc. La première donnée de chaque bloc est numéroté, de même que le premier bloc du fichier. Les enregistrements («lignes» ) qui contiennent des informations non traçables sont comptés. Chacun des nombres peut être omis. Pour les incréments la valeur est par défaut. Les valeurs de début et de fin ar défaut sont le premier et le dernier point ou bloc. Si every est omis, tous les points de tous les enregistrements («lignes» ) sont tracés. Exemples : every :::3::3 # sélectionne juste le 4eme bloc (le premier est ) every :::::9 # sélectionne les premiers blocs every 2:2 # sélectionne un point sur deux dans un bloc sur deux every ::5::5 # sélectionne les points 5 à 5 de chaque bloc 6
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page 7 4.8. Application : afficher une courbe progressivement Une des applications possibles de every est le tracé d une courbe par affichage progressif (et non instantané) des points. Ceci peut être utile par exemple pour voir la progression d une particule sur sa trajectoire. Supposons que, dans le fichier nommé trajectoire.res on ait écrit les coordonnées (x, y) d une particule dans le plan à des instants successifs uniformément espacés. Ce fichier se présente sous la forme :.2 7.4 -.6 3.7 Ecrivons dans un premier fichier nommé trajectoire anim main.gnu : g= load trajectoire_anim_fonction.gnu et dans un second, nommé trajectoire anim fonction.gnu : plot [-:] [-:] trajectoire.res every ::::g: w l g=g+ reread On fait ensuite exécuter par la commande Linux : gnuplot trajectoire anim main.gnu Le premier point est tracé, puis le premier et le second, puis les trois premiers, et ainsi de suite jusqu à la trajectoire complète. On observe ainsi très bien, par exemple, que, pour une trajectoire keplérienne assez elliptique la vitesse est beaucoup plus grande au périgée qu à l apogée. 4.9 Tracé de segments et de flèches Une commande permet de faire figurer sur un tracé des flèches ou des segments de droite : # mes_donnees_2.dat, le segment 2 et la fleche 25 plot [-.:.] mes_donnees_.dat u 2: w l # trace les donnees de mes_donnees_.dat set arrow 2 from.,.2 to -.34,. nohead # declare un segment auquel on attribue le no 2 replot # ajoute le segment precedent au graphe precedent set arrow 25 from.5,. to.5,. # declare une fleche a laquelle on attribue le no 25 replot # ajoute la fleche 25 au graphe precedent plot [:.] mes_donnees_2.dat # cree un nouveau graphe avec les donnees de set noarrow 2 # pour supprimer le segment 2 replot # retrace les donnees de mes_donnees_2.dat # sans le segment 2 et avec la fleche 25 Dans cet exemple, la 2eme commande prépare l ajout aux tracés qui vont suivre, d un segment (option nohead) joignant les points de coordonnées (.,.2) et (-.34,.) dans le système d unités du graphe. 4. Production d un fichier Postscript et impression plot mes_donnees_.dat # trace les donnees de mes_donnees_.dat a l ecran set term postscript # dirige la sortie vers un fichier Postscript au lieu de l ecran set output courbe.ps # indique le nom choisi pour le fichier Postscript replot # ré-exécute le dernier tracé set term x # re-dirige la sortie vers l ecran pour la suite si necessaire 7
Lic. Mag. Phy. fond. Notice Gnuplot 23-3-22 5 :22 :. page 8 4. Comment tout faire à partir d un programme C Tous les fichiers contenant des commandes Gnuplot peuvent être écrits à partir du C, ce qui apporte un avantage de compacité et la possibilité d une automatisation du passage de paramètres du C à Gnuplot. On fait exécuter également à partir du C les fichiers ainsi générés en utilisant l instruction system : system("gnuplot mon fich.gnu"); Il ne faut pas oublier : de fermer tous les fichiers avant l instruction précédente de placer un #include<stdlib.h> dans les directives 8