Gnuplot per tutti
Carlo Carminati
Dipartimento di Matematica
Università di Pisa
27 ottobre 2012
Che cos’è gnuplot?
Che cos’è gnuplot?
È uno strumento finalizzato all’analisi grafica dei dati.
Che cos’è gnuplot?
È uno strumento finalizzato all’analisi grafica dei dati.
Le funzionalità di gnuplot comprendono:
Che cos’è gnuplot?
È uno strumento finalizzato all’analisi grafica dei dati.
Le funzionalità di gnuplot comprendono:
I
visualizzazione di dati sperimentali (scattered plot);
Che cos’è gnuplot?
È uno strumento finalizzato all’analisi grafica dei dati.
Le funzionalità di gnuplot comprendono:
I
visualizzazione di dati sperimentali (scattered plot);
I
analisi statistiche;
Che cos’è gnuplot?
È uno strumento finalizzato all’analisi grafica dei dati.
Le funzionalità di gnuplot comprendono:
I
visualizzazione di dati sperimentali (scattered plot);
I
analisi statistiche;
I
grafici di funzione in 2D o 3D;
Che cos’è gnuplot?
È uno strumento finalizzato all’analisi grafica dei dati.
Le funzionalità di gnuplot comprendono:
I
visualizzazione di dati sperimentali (scattered plot);
I
analisi statistiche;
I
grafici di funzione in 2D o 3D;
I
produzione di filmati.
Che cos’è gnuplot?
È uno strumento finalizzato all’analisi grafica dei dati.
Le funzionalità di gnuplot comprendono:
I
visualizzazione di dati sperimentali (scattered plot);
I
analisi statistiche;
I
grafici di funzione in 2D o 3D;
I
produzione di filmati.
Perché usare gnuplot?
Perché usare gnuplot?
I
è facile;
Perché usare gnuplot?
I
è facile;
I
è veloce;
Perché usare gnuplot?
I
è facile;
I
è veloce;
I
è libero
Perché usare gnuplot?
I
è facile;
I
è veloce;
I
è libero
PS: gnuplot isn’t GNU!
Perché usare gnuplot?
I
è facile;
I
è veloce;
I
è libero
PS: gnuplot isn’t GNU!
(ma è pur sempre open source).
Modi d’uso
I
produzione veloce di grafici usa-e-getta;
Modi d’uso
I
produzione veloce di grafici usa-e-getta;
I
produzione di grafici che intendiamo conservare (ed
utilizzare in futuro);
Modi d’uso
I
produzione veloce di grafici usa-e-getta;
I
produzione di grafici che intendiamo conservare (ed
utilizzare in futuro);
I
produzione di grafici di alta qualitá, da stampare.
Grafici 2D
Grafici 2D
Scattered plots
Scattered plots
Fit di dati sperimentali
Fit di dati sperimentali
Grafici di funzioni in due variabili.
Grafici di funzioni in due variabili.
Superfici parametriche
Multiplot
Figure incapsulate
Multiplot
Curve di Lissajous
Primi passi con gnuplot
Primi passi con gnuplot
Primi passi con gnuplot
Grafico di sin x, sull’intervallo [0, 2π].
Grafico di sin x, sull’intervallo [0, 2π].
Grafico di sin x, sull’intervallo [0, 2π].
Campionamento.
Campionamento.
Campionamento.
Campionamento.
Campionamento.
Campionamento.
Campionamento.
Input ed output
Input
I
Dati calcolati da gnuplot, p.es:
plot sin(x)
Input ed output
Input
I
Dati calcolati da gnuplot, p.es:
plot sin(x)
I
Dati presi da un file, p.es.
plot ‘‘entropy.dat’’ u 1:3 with dots
Input ed output
Input
I
Dati calcolati da gnuplot, p.es:
plot sin(x)
I
Dati presi da un file, p.es.
plot ‘‘entropy.dat’’ u 1:3 with dots
I
Input dinamico, p.es.
plot ‘‘< wget -O - http://db.tt/Ps9PgmT3’’
Input ed output
Input
I
Dati calcolati da gnuplot, p.es:
plot sin(x)
I
Dati presi da un file, p.es.
plot ‘‘entropy.dat’’ u 1:3 with dots
I
Input dinamico, p.es.
plot ‘‘< wget -O - http://db.tt/Ps9PgmT3’’
Output
Input ed output
Input
I
Dati calcolati da gnuplot, p.es:
plot sin(x)
I
Dati presi da un file, p.es.
plot ‘‘entropy.dat’’ u 1:3 with dots
I
Input dinamico, p.es.
plot ‘‘< wget -O - http://db.tt/Ps9PgmT3’’
Output
I
finestra grafica (default);
Input ed output
Input
I
Dati calcolati da gnuplot, p.es:
plot sin(x)
I
Dati presi da un file, p.es.
plot ‘‘entropy.dat’’ u 1:3 with dots
I
Input dinamico, p.es.
plot ‘‘< wget -O - http://db.tt/Ps9PgmT3’’
Output
I
finestra grafica (default);
I
file grafico (eps, jpg, pdf,...), p.es.
Input ed output
Input
I
Dati calcolati da gnuplot, p.es:
plot sin(x)
I
Dati presi da un file, p.es.
plot ‘‘entropy.dat’’ u 1:3 with dots
I
Input dinamico, p.es.
plot ‘‘< wget -O - http://db.tt/Ps9PgmT3’’
Output
I
finestra grafica (default);
I
file grafico (eps, jpg, pdf,...), p.es.
set term postscript,
set output ‘‘nomefile.eps’’
Input ed output
Input
I
Dati calcolati da gnuplot, p.es:
plot sin(x)
I
Dati presi da un file, p.es.
plot ‘‘entropy.dat’’ u 1:3 with dots
I
Input dinamico, p.es.
plot ‘‘< wget -O - http://db.tt/Ps9PgmT3’’
Output
I
finestra grafica (default);
I
file grafico (eps, jpg, pdf,...), p.es.
set term postscript,
set output ‘‘nomefile.eps’’
I
file di dati, p.es. set table ‘‘nomefile.dat’’
Input ed output
Input
I
Dati calcolati da gnuplot, p.es:
plot sin(x)
I
Dati presi da un file, p.es.
plot ‘‘entropy.dat’’ u 1:3 with dots
I
Input dinamico, p.es.
plot ‘‘< wget -O - http://db.tt/Ps9PgmT3’’
Output
I
finestra grafica (default);
I
file grafico (eps, jpg, pdf,...), p.es.
set term postscript,
set output ‘‘nomefile.eps’’
I
file di dati, p.es. set table ‘‘nomefile.dat’’
I
stampante;
Input ed output
Input
I
Dati calcolati da gnuplot, p.es:
plot sin(x)
I
Dati presi da un file, p.es.
plot ‘‘entropy.dat’’ u 1:3 with dots
I
Input dinamico, p.es.
plot ‘‘< wget -O - http://db.tt/Ps9PgmT3’’
Output
I
finestra grafica (default);
I
file grafico (eps, jpg, pdf,...), p.es.
set term postscript,
set output ‘‘nomefile.eps’’
I
file di dati, p.es. set table ‘‘nomefile.dat’’
I
stampante;
I
dumb terminal (es: set terminal dumb ;-)
Interazione dinamica
È possibile interagire dinamicamente con gnuplot tramite il
mouse e tastiera:
ESEMPIO
Script gnuplot
La creazione di una immagine di qualità è il risultato di
numerose prove.
Script gnuplot
La creazione di una immagine di qualità è il risultato di
numerose prove.
Per visualizzare i dati in maniera ottimale è necessario
configurare un certo numero di opzioni, e non è in genere
evidente in principio quale sia la scelta ottimale.
Script gnuplot
La creazione di una immagine di qualità è il risultato di
numerose prove.
Per visualizzare i dati in maniera ottimale è necessario
configurare un certo numero di opzioni, e non è in genere
evidente in principio quale sia la scelta ottimale.
È quindi consigliabile raggruppare istruzioni e comandi in uno
script gnuplot che possiamo eseguire, e al quale potremo in
seguito apportare modifiche per migliorare la resa grafica.
Un esempio
Scriviamo nel file taylor.gp le seguenti istruzioni:
Un esempio
Scriviamo nel file taylor.gp le seguenti istruzioni:
set
set
set
set
set
size ratio -1 # scala fissa su x e y
xzeroaxis
yzeroaxis
xrange [-2*pi:2*pi]
yrange [-2:2]
Un esempio
Scriviamo nel file taylor.gp le seguenti istruzioni:
set
set
set
set
set
size ratio -1 # scala fissa su x e y
xzeroaxis
yzeroaxis
xrange [-2*pi:2*pi]
yrange [-2:2]
f1(x)=x
# pol. di taylor
f3(x)=x-x**3/6
f5(x)=x-x**3/6+x**5/120
Un esempio
Scriviamo nel file taylor.gp le seguenti istruzioni:
set
set
set
set
set
size ratio -1 # scala fissa su x e y
xzeroaxis
yzeroaxis
xrange [-2*pi:2*pi]
yrange [-2:2]
f1(x)=x
# pol. di taylor
f3(x)=x-x**3/6
f5(x)=x-x**3/6+x**5/120
plot f1(x) lt 3 t "",\
f3(x) lt 3 t "",\
f5(x) lt 3 t "",\
sin(x) lt 1 t ""
Esecuzione
Ci sono due modi di eseguire il nostro script:
Esecuzione
Ci sono due modi di eseguire il nostro script:
I
avviare gnuplot, e dare il comando
load ‘‘taylor.gp’’
Esecuzione
Ci sono due modi di eseguire il nostro script:
I
avviare gnuplot, e dare il comando
load ‘‘taylor.gp’’
I
direttamente dalla shell, mediante il comando
gnuplot -persist taylor.gp
Esecuzione
Ci sono due modi di eseguire il nostro script:
I
avviare gnuplot, e dare il comando
load ‘‘taylor.gp’’
I
direttamente dalla shell, mediante il comando
gnuplot -persist taylor.gp
in ogni caso il risultato sarà il seguente:
Animazioni I
Con gli script gnuplot posso generare delle animazioni,
vediamo come.
Animazioni I
Con gli script gnuplot posso generare delle animazioni,
vediamo come.
Creo dei files di dati che chiamo
sample1.dat,
sample2.dat,
sample3.dat, ...
Mentre nello script animazione.gp dò i comandi:
Animazioni I
Con gli script gnuplot posso generare delle animazioni,
vediamo come.
Creo dei files di dati che chiamo
sample1.dat,
sample2.dat,
sample3.dat, ...
Mentre nello script animazione.gp dò i comandi:
nome=’’sample’’.b.’’.dat’’
plot nome w lines t ‘‘n=’’.b
pause .1
# attende .1’
b=b+1
# incrementa b
reread
# rilegge questo file
Ora avvio gnuplot e dò i comandi
b=1, load ‘‘animazione.gp’’
Animazioni II
Generare un’animazione col metodo appena visto è semplice,
ma presenta anche alcune controindicazioni:
Animazioni II
Generare un’animazione col metodo appena visto è semplice,
ma presenta anche alcune controindicazioni:
:-( se i file da visualizzare sono complessi (i.e. contengono
molti punti) le immagini scorrono troppo lentamente;
Animazioni II
Generare un’animazione col metodo appena visto è semplice,
ma presenta anche alcune controindicazioni:
:-( se i file da visualizzare sono complessi (i.e. contengono
molti punti) le immagini scorrono troppo lentamente;
:-( non è possibile bloccare il filmato su una particolare
inquadratura, né è possibile tornare indietro (se non
ricominciando da capo).
Animazioni II
Generare un’animazione col metodo appena visto è semplice,
ma presenta anche alcune controindicazioni:
:-( se i file da visualizzare sono complessi (i.e. contengono
molti punti) le immagini scorrono troppo lentamente;
:-( non è possibile bloccare il filmato su una particolare
inquadratura, né è possibile tornare indietro (se non
ricominciando da capo).
Un modo per ovviare a questo inconveniente è il seguente:
I
lanciare uno script gnuplot che generi files .jpg contenenti i
grafici che ci interessano (in genere un filmato potrà
contenere qualche centinaio di frames)
Animazioni II
Generare un’animazione col metodo appena visto è semplice,
ma presenta anche alcune controindicazioni:
:-( se i file da visualizzare sono complessi (i.e. contengono
molti punti) le immagini scorrono troppo lentamente;
:-( non è possibile bloccare il filmato su una particolare
inquadratura, né è possibile tornare indietro (se non
ricominciando da capo).
Un modo per ovviare a questo inconveniente è il seguente:
I
lanciare uno script gnuplot che generi files .jpg contenenti i
grafici che ci interessano (in genere un filmato potrà
contenere qualche centinaio di frames)
I
interlacciare le immagini .jpg con mmencoder in modo da
formare un filmato
Animazioni II
Generare un’animazione col metodo appena visto è semplice,
ma presenta anche alcune controindicazioni:
:-( se i file da visualizzare sono complessi (i.e. contengono
molti punti) le immagini scorrono troppo lentamente;
:-( non è possibile bloccare il filmato su una particolare
inquadratura, né è possibile tornare indietro (se non
ricominciando da capo).
Un modo per ovviare a questo inconveniente è il seguente:
I
lanciare uno script gnuplot che generi files .jpg contenenti i
grafici che ci interessano (in genere un filmato potrà
contenere qualche centinaio di frames)
I
interlacciare le immagini .jpg con mmencoder in modo da
formare un filmato
Fare un film, praticamente
Basta modificare lo script animazione.gp cosı́:
Fare un film, praticamente
Basta modificare lo script animazione.gp cosı́:
nome=’’sample’’.b.’’.dat’’ # def input
fileout=’’frame’’.b.’’.jpg’’ # def output
set term jpeg # format=jpeg
set output fileout # output=fileout
plot nome with lines t ‘‘n=’’.b
pause .1 # attende .1’
b=b+1 # incrementa b
reread # rilegge questo file
Fare un film, praticamente
Basta modificare lo script animazione.gp cosı́:
nome=’’sample’’.b.’’.dat’’ # def input
fileout=’’frame’’.b.’’.jpg’’ # def output
set term jpeg # format=jpeg
set output fileout # output=fileout
plot nome with lines t ‘‘n=’’.b
pause .1 # attende .1’
b=b+1 # incrementa b
reread # rilegge questo file
Questo script produce i fotogrammi
sample1.dat,
sample2.dat,
sample3.dat,...
Interlacciare files .jpg
A questo punto non ci rimane che interlacciare i files .jpeg, e
questo possiamo farlo col comando mmencoder (che fa parte
del pacchetto di mplayer):
Interlacciare files .jpg
A questo punto non ci rimane che interlacciare i files .jpeg, e
questo possiamo farlo col comando mmencoder (che fa parte
del pacchetto di mplayer):
mencoder mf://@list.txt -mf
w=800:h=600:fps=15:type=jpg -ovc lavc
-lavcopts vcodec=mpeg4:mbd=2:trell -oac copy
-o film.avi
Interlacciare files .jpg
A questo punto non ci rimane che interlacciare i files .jpeg, e
questo possiamo farlo col comando mmencoder (che fa parte
del pacchetto di mplayer):
mencoder mf://@list.txt -mf
w=800:h=600:fps=15:type=jpg -ovc lavc
-lavcopts vcodec=mpeg4:mbd=2:trell -oac copy
-o film.avi
dove list.txt é un file che contiene i nomi dei files jpeg che
si vogliono concatenare
Interlacciare files .jpg
A questo punto non ci rimane che interlacciare i files .jpeg, e
questo possiamo farlo col comando mmencoder (che fa parte
del pacchetto di mplayer):
mencoder mf://@list.txt -mf
w=800:h=600:fps=15:type=jpg -ovc lavc
-lavcopts vcodec=mpeg4:mbd=2:trell -oac copy
-o film.avi
dove list.txt é un file che contiene i nomi dei files jpeg che
si vogliono concatenare
la velocitá é di 15 frame al secondo (fps)
Interlacciare files .jpg
A questo punto non ci rimane che interlacciare i files .jpeg, e
questo possiamo farlo col comando mmencoder (che fa parte
del pacchetto di mplayer):
mencoder mf://@list.txt -mf
w=800:h=600:fps=15:type=jpg -ovc lavc
-lavcopts vcodec=mpeg4:mbd=2:trell -oac copy
-o film.avi
dove list.txt é un file che contiene i nomi dei files jpeg che
si vogliono concatenare
la velocitá é di 15 frame al secondo (fps)
il file prodotto si chiama film.avi
Interlacciare files .jpg
A questo punto non ci rimane che interlacciare i files .jpeg, e
questo possiamo farlo col comando mmencoder (che fa parte
del pacchetto di mplayer):
mencoder mf://@list.txt -mf
w=800:h=600:fps=15:type=jpg -ovc lavc
-lavcopts vcodec=mpeg4:mbd=2:trell -oac copy
-o film.avi
dove list.txt é un file che contiene i nomi dei files jpeg che
si vogliono concatenare
la velocitá é di 15 frame al secondo (fps)
il file prodotto si chiama film.avi
(e il resto sono opzioni che non ci interessano).
Bibliografia essenziale
Oltre alla documentazione ufficiale (http://www.gnuplot.info/)
sono molto utili i seguenti riferimenti:
Bibliografia essenziale
Oltre alla documentazione ufficiale (http://www.gnuplot.info/)
sono molto utili i seguenti riferimenti:
I
GNUPLOT 4.2 - A Brief Manual and Tutorial di H.P. Gavin
www.duke.edu/˜hpgavin/gnuplot.html
Bibliografia essenziale
Oltre alla documentazione ufficiale (http://www.gnuplot.info/)
sono molto utili i seguenti riferimenti:
I
GNUPLOT 4.2 - A Brief Manual and Tutorial di H.P. Gavin
www.duke.edu/˜hpgavin/gnuplot.html
I
not so FAQ di T. Kawano
t16web.lanl.gov/Kawano/gnuplot/index-e.html
Bibliografia essenziale
Oltre alla documentazione ufficiale (http://www.gnuplot.info/)
sono molto utili i seguenti riferimenti:
I
GNUPLOT 4.2 - A Brief Manual and Tutorial di H.P. Gavin
www.duke.edu/˜hpgavin/gnuplot.html
I
not so FAQ di T. Kawano
t16web.lanl.gov/Kawano/gnuplot/index-e.html
I
Gnuplot in Action di P.K. Janert
Manning Publications Co. www.manning.com/janert/