Le tracé de graphes avec Gnuplot

Commandes préliminaires :

exit : pour quitter gnuplot

clear : pour tout effacer

reset : efface les options passées par set

load 'fichier.gnu' : permet de lancer un fichier contenant des commandes gnuplot

gnuplot fichier.gnu : idem

save "fichier.gnu" : sauve les options passées par set et le dernier plot dans un fichier de commandes

replot : retracer

cd : pour changer de répertoire

pwd : pour voir le répertoire courant

?nom_commande : aller à l'aide correspondante

!commande_unix : utiliser une commande unix dans gnuplot

Présentation du graphe :

set title "Titre"

Titre des axes :

set xlabel "XX"

set ylabel "YY"

set time : afficher l'heure

Echelle des axes :

set yrange [y1:y2]

set xtics 2 : axe des x gradué de 2 en 2

set ytics 0,2 : axe des y gradué de 2 en 2 à partir de 0 (ne fonctionne qu'avec y)

set m{x|y}tics n : défini la graduation mineure suivant x ou y en découpant l'intervale en n parties

set xtics ("April" 1, "May" 2, "June" 3, "July" 4) : permet de personnaliser les étiquettes d'axes -> affiche April pour x=1

Exemple : réalisation d'une courbe granulométrique

set title "Echantillons sable de Loire"
set xlabel "tamis"
set grid
set xtics ("0.63" 0.63, "1.00" 1, "1.25" 1.25, "2.00" 2,"2.50" 2.5,"3.25" 3.25,"4.00" 4,"5.00" 5)
set ylabel "refus"
plot "tamisage.dat" using 1:2 with lines, "tamisage.dat" using 1:3 with lines

fig3

set tics out : afficher les tics à l'extérieur

set format y "10^{%L}" : passer les étiquettes d'axes au format scientifique

set logscale y : passer en format logarithmique

set logscale y e : passer en format logarithmique en base e

set gridAffichage de la grille :

Réglage des axes :

set border n fixe les axes (An integer is assigned for each frame line, the bottom is 1, left 2, top 4, and right 8. The option n is the sum of those integers.)

utiliser avec set xtics nomirror et set ytics nomirror

Marges

Les marges sont calculées automatiquement par défaut, et parfois au plus juste. Pour régler les marges, modifier le paramètre {l|r|b|t}margin

set lmargin 20

Gestion des polices

Les polices sont déterminées par la commande font. Exemple :

set title "titre" font "Bold,20"

Gestion des dates :

voir set locale "french"

set {x|y}data time

set timefmt "%d-%m-%Y" lit une date au format 12-11-2006

set format x "%b/%d" affiche sur le graphe feb/08

data timefmt comment
2004/4/6 %Y/%m/%d 2004/04/06 works well
December/96 %B/%y warning if mis-spelled
2004/Jan %Y/%b 3-letters abbreviation
1970/240 %Y/%j "%j" is a day of the year (1-365)
02:45:03 %H:%M:%S "%H", 24-hour
1076909172 %s seconts since 1/1/1970 00:00

Redirection du graphe vers un fichier

set term postscript

set term postscript eps color "times-roman,24" pour faire du postscript couleur en format horizontal.

set term png pour générer une image au format png

Divers

unset key : evite d'afficher la légende sur le graphe

set key box : encadrer le titre de la légende

\ permet d'écrire une commande sur plusieurs lignes

On peut écrire une commande avec juste le nombre de caractères minimal -> peu lisible w = with!! not = notitle

Caractères spéciaux : set title "S" font "Symbol,24" : sigma taille 24

Exposants _ et indices ^ (ne fonctionne qu'en "postscript enhanced")

set terminal postscript enhanced

set output "fig.ps"

Tracé :

pause -1 "Appuyez sur RETURN pour continuer" : permet de maintenir l'affichage en mode script

Graphe

A partir d'une fonction plot sin(x)

Superposer plusieurs fonctions :

set multiplot

plot sin(x)

plot cos(x)

points à partir d'un fichier :

plot 'fichier.dat' using 1:2 with linespoints pointsize 2 pointtype 4

Gnuplot accepte des formules sur les colonnes x et y du fichier de données, par exemple :

plot "fichier.dat" using 1:(sqrt($2))

ou

g(y)=log(y) #définition de la fonction g
plot "fichier.dat" using (g($1)):2
plot "fichier.dat" using ($1*2):2

On peut également imposer des conditions sur les données avec l'opérateur ternaire ? : . Dans l'exemple $2 vaut 100 si $2>100, sinon $2.

plot "fichier.dat" using 1:($2<100 ? $2 : 100)

Tracé avec 2 axes y différents

set yrange [-1:1]

set y2range [0:1]

plot sin(x) axis x1y1, sin(x)**2 axis x1y2

Histogramme :

set style fill solid 0.25 border -1 : rempli les barres et met une bordure

set boxwidth 0.5 relative réduit de 50% la largeur des barres

plot 'fichier.dat' using 1:2 with boxes

Il est possible de tracer deux histogrammes côte à côte en décalant les abscisses :

set boxwidth 0.4 relative 
plot 'data2.dat' using ($1-0.2):2 with boxes,'data1.dat' using ($1+0.2):2 with boxes

Régler le pb avec les dates en x

Titre des courbes

plot f(x) title "courbe1"

Style des courbes

plot f(x) with {A} lt 0 lw 2 pt 5 ps 2 où A pouvant prendre les valeurs lines, linespoints, impulses, points, dots, boxes, steps, fsteps, histeps, errorbars, boxerrorbars, candlesticks,financebars ou vector ;

En format postscript, faire varier la valeur de lt pour changer les pointillés. En couleur, des valeurs sont donées dans le tableau suivant

numéro : 0 1 2 3 4 6 9 14 15 16
couleur : pointillé rouge vert bleu violet marron gris cyan jaune orange

Dessiner plusieurs courbes sur le même graphe

set multiplot
plot x**3
set origin .4,0.05
set size .4,.4
plot x**2
unset multiplot

fig1

Dessiner en 3D

splot

Utilisation des accents

Gnuplot n'est pas prévu pour écrire des caractères accentués. De plus, le codage UTF-8 n'est pas connu par gnuplot. Donc, il faut se débrouiller autrement. D'abord, on crée un fichier en ISO-8859-1 avec iconv

 iconv -f UTF-8 -t ISO-8859-1 plot.gnu > plotISO.gnu

Ensuite, on définit le codage dans gnuplot et ça marche.

set encoding iso_8859_1

Réalisation d'un ajustement de courbe

Il est possible d'ajuster une courbe de tendance, c'est à dire de calculer les paramètres a b et c de la fonction f(x) choisie.

Ex :
lissage.gnu

f(x)=a*x**2+b*x+c #definition de la fonction fit
fit f(x) 'data-fit' using 1:2:3 via a,b,c
set xrange [0:11]
plot f(x), 'data-fit'using 1:2:3 with errorbars
pause -1 "touche entree pour sortir"
Crée un fichier fit.log donnant les valeurs de a, b et c. data.fit contient x,y,errorbar

fig2

Utilisation des commandes unix

Il est possible d'utiliser awk dans la commande plot

plot ">awk '{x=x+$2; print $1,x}' file1.dat" with boxes : crée un histogramme des valeurs cumulées

plot ">awk '{print $1,($1<=3 && $1>=1) ? $2*5 : $2}' file1.dat" with lines : multiplie les valeurs Y par 5 si Y < 0.2