Gnuplot è programma che può essere utilizzato come calcolatrice grafica, per la presentazione di dati
per il raffinamento dei dati mediante metodi di regressione non lineare.
E' un programma che esiste per qualunque piattaforma (Linux, Windows, Unix, MacOs, ...).
Le istruzioni possono essere date in modo interativo, usando una interfaccio comandi o usando script. In Windows l'interfaccia contiene pulsanti e menu a tendina per semplificare l'utilizzo.
Permette di salvare i grafici in diversi formati, utili per la presentazione e la pubblicazione.
Link utili
|
Generalità |
Impostazioni |
Grafici di funzioni | Grafica di dati | |
Funzioni | Script |
Sui sistemi Linux e MacOs è generalmente istallato di default. Per sistemi Windows scaricare il file con la versione aggiornata dal sito ufficiale: gpXXXwin32.zip (XXX= codice dell'ultima versione), scompattare il file in una directory a scelta. Copiare sul desktop un link al programma wgnuplot.exe (nella sottocartella bin o binary della distribuzione). Attenzione: se si sposta il programma wgnuplot.exe fuori della cartella predefinita si perde l'uso dei pulsanti e menu.
gnuplot> set termmostra le diverse scelte disponibili per il terminale grafico. In ogni caso digitando:
gnuplot> help comandosi attiva la finestra di help (dipende dal sistema operativo in uso)
Su sistemi Linux, Unix e MacOs si può iniziare digitando semplicemente il comando
gnuplotin una finestra del temrinale. Per i sistemi Windows basta un doppio clik sul link o sul programma.
Una volta attivato bisogna spostarsi nella directory di lavoro. Nei sistemi Windows questo può essere fatto usando il pulsante ChDir. Nei sistemi Linux (Unix) è più semplice attivare il programma direttamente dalla directory di lavoro.
In ogni caso ci si può spostare nelle directories usando il comando:
gnuplot> !cd 'percorso'dove con percorso si indica il path della directory di destinazione es.:
gnuplot> !cd '..'sposta in alto la directory di lavoro
Il comando:
gnuplot> testapre una finestra grafica e mostra un test delle possibilità grafiche.
Le versioni recenti di Gnuplot attivano la finestra grafica in modo wxt. Questo è un terminale multipiattaforma (valido per sistemi Windowws e Linux) ma non lo trovo ancora molto efficace per Windows (soprattutto W7 e Vista). In tal caso è meglio cambiare terminale digitando, come primo comando:
gnuplot> set term winPer verificare il tipo di terminale in uso digitare:
gnuplot> show termPer consentire l'uso di un set esteso di caratteri usare l'opzione enhanced:
gnuplot> set term win enhanced Terminal type set to 'windows' Options are 'color enhanced font "Arial, 10"'
Le istruzioni possono essere date come script: ovvero un file di tipo ASCII (testo) in cui le istruzioni (le stesse che si possono fornire sull'interfaccia) sono inserite in modo sequenziale. Lo script si richiama mediante il comando load. Ad esempio se lo script è salvato nel file ASCII: script.plt il comando:
gnuplot> load 'script.plt'provoca l'esecuzione delle istruzioni dello script.
Le istruzioni necessarie per generare il grafico corrente si possono salvare in un file script che può essere richiamato e modificato a piacere. Per salvare le istruzioni si usa il comando save:
gnuplot> save "nomefile.plt"L'estensione per il file script è arbitraria. Trattandosi di file di tipo testo (ASCII) in sistemi Windows può essere comodo usare l'estensione .txt in modo da essere automaticamente aperto usando notepad o altro editor testuale.
Alcune impostazioni di uso frequente per la grafica di dati e funzioni sono:
gnuplot> set xlabel "asse x" # etichetta dell'asse x gnuplot> set xlabel "asse y" # etichetta dell'asse y gnuplot> set title "titolo" # titolo del grafico gnuplot> set xrange [0:5] # intervallo x in questo caso 0-5 gnuplot> set yrange [0:5] # intervallo y in questo caso 0-5 gnuplot> set autoscale # calcolo automatico intervallo gnuplot> unset key # disabilita la legenda gnuplot> set key top left # riposiziona la legenda in alto a sinistra # altre opzioni: top|bottom right|left
gnuplot> plot sin(x) # crea un grafico della funzione seno
La variabile x è la variabile indipendente per grafici 2D. Per grafici 3D si usano 'x' e 'y' come variabili indipendenti e il comando splot (abbreviato sp):
gnuplot> plot sin(x*y) # crea un grafico 3D della funzione seno(x*y)
Per visualizzare grafici di più funzioni (o dati) nella stessa finestra utlizza la virgola:
gnuplot> plot sin(x), cos(x)
In alcuni terminali, utilizzando il tasto destro del Mouse, è possibile effettuare uno zoom nella finestra grafica. Il taso a sulla tastiera ripristina la visione intera del grafico.
Per cambiare l'intervallo mostrato si usa:
gnuplot> plot [xmin:xmax][ymin:ymax] sin(x)i valori omessi sono calcolati per default
gnuplot> help functions gnuplot> help operatorsMentre l'uso delle singole funzioni si trova digitando:
gnuplot> help functions funzione
E' possibile utilizzare Gnuplot come calcolatrice usando il comando print (abbreviato pr):
gnuplot> pr 3.5*sqrt(2) 4.94974746830583esegue il calcolo dell'espressione che segue e ne stampa il risultato.
E' possibile definire le proprie funzioni:
gnuplot> f(x)=((x+a)*(x-a)/b)+d*exp(-x**2) gnuplot> a=1.; b=3.; d = 2.Nella definizione delle costanti il punto e virgola (;) è l'equivalente dell'andata a capo.
la funzione f(x) (o altro nome) può essere graficata usanto il comando plot (o abbreviato pl):
gnuplot> pl f(x)o calcolata in un punto x specifico usando il comando print (pr
gnuplot> pr f(5.2) 8.68000000000361
Le funzioni possono essere definite ed utilizzate in modo parametrico:
gnuplot> f(x,a,b,d)=((x+a)*(x-a)/b)+d*exp(-x**2) gnuplot> pl f(x,1.,3.,2.) gnuplot> pr f(5.2,1.,3.,2.) 8.68000000000361
gnuplot> print 3/2 1 # parte intera gnuplot> print 2/3.0 1.5 # risultato correttoPertanto è bene inserire almeno un numero con il '.' nelle operazioni per evitare erroi di calcolo (a meno che non si vogli esplicitamente calcolare operazioni tra interi).
gnuplot> plot "file_dati.txt" gnuplot> plot "file_dati1.txt", "file_dati2.txt"Per graficare più files si usa la virgola. Il nome dei files deve essere racchiuso tra apici o doppi apici.
I dati devono essere salvati in colonne in un file di tipo testo (ASCII). Le colonne sono generalmente separate da spazi o tab. Il carattere # indica una linea di commento e non viene considerata nel grafico.
# dati acquisiti #misura altezza, lunghezza 1 12.5 3.4 2 9.3 8.7 3 15.6 9.1 4 ... ...Le prime due righe non sono considerate.
Se il file contiene dati suddivisi in più colonne si può specificare quali colonne usare mediante il modificatoe using (abbreviato u):
gnuplot> pl 'file.txt' using 1:3grafica le colonne 1 (asse x) e 3 (asse y).
Si possono attuare cambi di variabili utilizzando espressioni algebriche e funzioni (racchiuse tra parentesi tonte) in cui le colonne sono indicate dal numero della colonna preceduto dal simbolo $:
gnuplot> pl 'file.txt' using ($1**2):3 # usa come ascissa il quadrato dei valori in prima colonna gnuplot> pl 'file.txt' using 1:(sin($1)) # usa come ordinata il seno dell'ascissa gnuplot> pl 'file.txt' using 1:(log($2)) # grafica il logaritmo naturale dei dati in colonna 2
Grafica di dati con barrre d'errore usando l'opzione with errorbars (eventualmente abbreviata).
gnuplot> pl 'file.txt' u 1:2:3 w error # usa i valori della colonna 3 come errore sulle ordinate (y) gnuplot> pl 'file.txt' u 1:2:(sqrt($2)) # usa come errore sulle ordinate la radice quadrata dei valori y gnuplot> pl 'file.txt' u 1:2:3 w xerror # usa i valori della colonna 3 come errore sulle ascisse (x)altre opzioni per le barre di errore sono: xerrorbars, yerrorbars, xyerrorbars (barre d'errore su x e y)
Per cambiare l'etichetta dei dati si usa il modificatore t 'testo'
gnuplot> pl 'file.txt' using 1:2 t'colonna 2' # nel caso di dati gnuplot> pl f(x) t'funzione' # per funzioniil comando t'' rimuove l'etichetta.
Per cambiare lo stile del grafico si usa il modificatore with (abbreviato w)
gnuplot> pl 'file.txt' using 1:2 t'colonna 2' w p(oints) pt 1 # punti di tipo (pt= point type) 1 gnuplot> pl 'file.txt' using 1:2 t'colonna 2' w l(ines) lt 2 # linea di tipo (lt= line type) 2 gnuplot> pl 'file.txt' using 1:2 t'colonna 2' w linesp lt 4 pt 2 # linee di tipo 4 e punti di tipo 2 gnuplot> pl f(x) w l lt 1 # linea di tipo 1
Nelle versioni antecedenti la 4.60, digitando i comandi
gnuplot> pl 'file.txt' w gnuplot> pl f(x) wvengono fornite le diverse opzioni possibili per lo stile. Le opzioni sono visibi anche digitando il comendo test.
#definisce il terminale set term win # definizione dei titoli per gli assi e per il grafico set title "titolo del grafico" set xlabel "Ascisse [u.m.]" set ylabel "Ordinate [u.m.]" # definizione della funzione f(x) = a * sin(b*x) * exp(-x/c) + d*x**2 # valori delle costanti a=1.5; b=4.5; c=2.; d=0.45; # grafica pl [:][:] f(x) t 'f(x)' w l lt 2 #grafico come linea di tipo 2
#definisce il terminale set term win #definizione dei titoli per il grafico set title "titolo del grfico" set xlabel "Ascisse [u.m.]" set ylabel "Ordinate [u.m.]" # grafica pl [:][:] 'file.dat' u 1:2 t 'dat' w points # file.dat = nome del file. usare il simbolo # per le linee di commento # # u 1:2 = colonne da usare # # t 'dat' = etichetta dei dati # # w p 3 = definisce lo stile del plot: punti di tipo 3 #
l'opzione smooth frequency (vedi help smooth frequency) rende i dati monotoni in x, quindi sostituisce al valore y(x) il valore ottenuto sommando tutti i valori y(x) con la stessa ascissa. Può essere usata per calcolare e rappresentare istogrammi di frequenze relative o assolute.
Frequenze assolute/relative
# definisce la funzione classe che assegna # ad x il valore della classe corrispondente: # a = ampiezza delle classi # # il termine a/2. definise l'ascissa al centro della classe # classe(x, a) = a*int(x/a) + a/2. #definisce la larghezza della classe a = 2. # larghezza colonne per l'istogramma set boxwidth a set title " Titolo del grafico " set xlabel " asse ascisse [u.m.]" set ylabel " Frequenze " # numero totale di punti # se Nt = 1 frequenze assolute # per frequenze relative inserire il numero di dati Nt = 1 #grafico plot [:][:] 'dati.txt' u (classe($2,a)):(1./Nt) smooth frequency t '' w boxesNell'esempio si assumono i dati in colonna 2. Se non è il vostro caso sostituire il numero della colonna contenente i dati in:
u (classe($2,a)):(1./Nt)
Frequenze assolute/relative
Per il grafico delle frequenze cumulative sostituire il comando di plot con:
plot [:][:] 'dati.txt' u (classe($2,a)):(1./Nt) smooth cumulative t '' w linespCome sopra si assumono i dati in colonna 2. Se non è il vostro caso sostituire il numero della colonna contenente i dati.
Frequenze e Frequenze cumulative
Per graficare insieme le frequenze e le frequenze cumulative sostituire il comando di plot con:
plot [:][:] 'dati.txt' u (classe($2,a)):(1./Nt) smooth cumulative t '' w linesp,\ 'dati.txt' u (classe($2,a)):(1./Nt) smooth frequency t '' w linespCome sopra si assumono i dati in colonna 2. Se non è il vostro caso sostituire il numero della colonna contenente i dati.