PLS-Fisica e AIF-Liguria - formazione/specializzazione rivolto per gli insegnanti Strumenti freeware/open source per l'insegnamento delle discipline scientifiche con applicazioni a problemi concreti GNUPLOT: dai dati ai grafici Daniele Grosso
Grafici 2d con GNUPLOT
Grafici 3d con GNUPLOT
Curve parametriche 3d gnuplot> set parametric gnuplot> r=sqrt(3)/3 gnuplot> splot cos(u),sin(u)+r,cos(3*u)/3, cos(u)+0.5,sin(u)-r/2,cos(3*u)/3, cos(u)-0.5,sin(u)-r/2,cos(3*u)/3 From http://rest-term.com/archives/1670/
Primo contatto Gnuplot si presenta con una finestra grafica ed una finestra comandi I comandi,possono essere raggruppati in macro salvate su file Il comando load macro.dem esegue, nell ordine, i comandi scritti nel file macro.dem Il comando help [comando] restituisce un help dalla guida di gnuplot (sul comando eventualmente specificato) ad esempio help set (set è il comando utilizzato per impostare il valore dei parametri)
Grafici di funzione È possibile definire funzioni e assegnare valori a variabili: gnuplot> f(x) = 2-1*x -9.8*x**2 definisce una parabola gnuplot> replot aggiorna un grafico gnuplot> a=1 gnuplot> print a restituisce 1 gnuplot> sin(x) Funzioni ammesse: abs cos log tm_min atan2 ibeta sinh acos cosh log10 tm_mon atanh inverf sqrt acosh erf norm tm_sec besj0 igamma tan arg erfc rand tm_wday besj1 imag tanh asin exp real tm_yday besy0 invnorm column asinh floor sgn tm_year besy1 int tm_hour atan gamma sin valid ceil lgamma tm_mday
Grafici di funzione (e dati) È possibile: Disegnare più funzioni nello stesso grafico Cambiare il range di visualizzazione set xrange [1:7] set yrange [-1:1] Riscalare automaticamente il grafico set autoscale Disegnare una griglia set grid e disattivarla con unset grid Utilizzare simboli diversi plot f(x) with point (oppure lines o dots) Specificare label per gli assi set xlabel t oppure set ylabel h(t)
Grafici di funzione (e dati) È possibile: Realizzare grafici in scala logaritmica e semilogaritmica set logscale x (set logscale y) set nologscale disattiva la scala logaritmica Salvare su un file il grafico (oppure i comandi che lo generano) save nomefile Realizzare un grafico a partire da una serie di dati sperimentali I dati vanno salvati in un file testo (txt oppure csv) Meglio usare spazio o tab come separatore di colonna, newline per le righe Una linea che inizia con # viene considerata un commento e non utilizzata. Il comando per graficare un file e : plot nome.file using col_x : col_y title titolo with symbol symboltype
Grafici a partire dai dati in un file Il comando per graficare un file e : plot nome.file using col_x : col_y title titolo with symbol symboltype Il comando plot interpreta i valori nelle colonne del file come segue: 2 colonne : u 1:2 x,y 1 colonna delle x, 2 colonna delle y 3 colonne : u 1:2:3 w ye x, y, ydelta errore su y (simmetrico) in colonna 3 3 colonne : u 1:2:3 w xe x, y, xdelta errore su x (simmetrico) in colonna 3 4 colonne : x, y, ylow, yhigh 4 colonne : x, y, xlow, xhigh 6 colonne : x, y, xlow, xhigh, ylow, yhigh Esempio: plot nomefile using 1:2:($2-$3):($2+$4) with yerrorbars considera la terza e quarta colonna limite superiore e inferiore per l errore su y (i comandi sono abbreviabili, es pl per plot)
Grafici da diversi blocchi dati in un unico file Dato il file misure.dat contenente il risultato di 3 esperienze in 3 blocchi di dati, separati da 2 newline, ciascuno di 3 colonne: X, Y ey il comando: plot «misure.dat» index 0:0 using 1:2:3 with yerrorbars,\ «misure.dat» index 1:1 using 1:2:3 with yerrorbars,\ «misure.dat» index 2:2 using 1:2:3 with yerrorbars genera il grafico dei dati (con barre di errore) backslash \ è usato per andare a capo senza interrompere la riga index 0:0 fa riferimento al primo blocco di dati using 1:2:3 fa si che le colonne siano interpretate come: x,y ey (errore su y, simmetrico) se l errore fosse percentuale, per convertirlo: using 1:2:($2*$3/100.0)
Esempio di impiego di una macro Grafico dei dati nel file datafile-01.dat # test # \t \n # in diverse modalità, mediante una macro Salvare in un file testo, macro.dem eseguire con load macro.dem plot "datafile-01.dat" using 1:2 with lines # wait 3s pause 3 plot "datafile-01.dat" using 1:2 with dots pause 3 plot "datafile-01.dat" using 1:2 with impulses pause 3 plot "datafile-01.dat" using 1:2 with points pause 3 # wait until return pause -1
Grafico con errori set ylabel 'V_diff (V)' set xlabel 't (s)' f(x) = a*exp(b*x) a = 8.55 b = 0.008 fit f(x) 'datarc.dat' u 1:2:3 via b pl 'datarc.dat' u 1:(f($1)) title 'fit' w l 2,\ 'datarc.dat' u 1:2:3 title 'data' w ye 1
Istogramma # set terminal png transparent nocrop enhanced font arial 8 size 420,320 # set output 'histograms.2.png' set boxwidth 0.9 absolute set style fill solid 1.00 border -1 set style histogram clustered gap 1 title offset character 0, 0, 0 set datafile missing '-' set style data histograms set xtics border in scale 1,0.5 nomirror rotate by -45 offset character 0, 0, 0 set xtics ("1891-1900" 0.00000, "1901-1910" 1.00000, "1911-1920" 2.00000, "1921-1930" 3.00000, "1931-1940" 4.00000, "1941-1950" 5.00000, "1951-1960" 6.00000, "1961-1970" 7.00000) set title "US immigration from Northern Europe\nPlot selected data columns as histogram of clustered boxes" set yrange [ 0.00000 : 300000. ] noreverse nowriteback plot 'immigration.dat' using 6:xtic(1) ti col, '' u 12 ti col, '' u 13 ti col, '' u 14 ti col set term postscript eps enhanced color set linestyle 1 lt 1 lw 50 plot "test.dat" using 1:2 with imp ls 1
Più linee sullo stesso grafico gnuplot> plot "output.dat" using 1:2 with lines, \ "output.dat" using 1:3 with lines,\ "output.dat" using 1:4 with lines gnuplot> plot "output.dat" using 1:2 title "Analytical" with lines, \ "output.dat" using 1:3 title "L=1, M=2" with lines,\ "output.dat" using 1:4 title "L=2, M=1" with lines set xlabel "x" set ylabel "y=exp(-x)" set title "Pade approximation" replot Tips: http://t16web.lanl.gov/kawano/gnuplot/index-e.html (not so Frequently Asked Questions)
Punti connessi da una linea plot "test.dat" using 1:2 notitle with points, \ "test.dat" using 1:2 smooth csplines \ title "spline" with lines,\ "test.dat" using 1:2 smooth bezier \ title "bezier" with lines plot "test.dat" using 1:2:3 notitle with yerrorbars, \ "test.dat" using 1:2:3 smooth acsplines \ title "acsplines" with lines,\ "test.dat" using 1:2 smooth bezier \ title "bezier" with lines
Realizzare il fit dei dati con una funzione nota Come realizzare un fit con gnuplot 1.definire la funzione con cui effettuare il fit f(x) = a * x**2 + b*x + c 2.assegnare valori iniziali ragionevoli ai parametri a = b = c = 3.effettuare il fit: fit f(x) nomefile u 1:2 via a,b u 1:2 (colonne di ascissa e ordinata) via a,b,c parametri su cui calcolare il fit N.B. Gnuplot restituisce il chi-quadro, il numero delle iterazioni etc
Output ad alta qualità con gnuplot Per produrre grafici di qualità si può impostare il terminale! a postscript (è possibile utilizzare anche immagini gif, jpeg etc) gnuplot> set term postscript gnuplot> set output output.ps gnuplot> replot gnuplot> save "output.plt" gnuplot> quit PostScript è un linguaggio di descrizione di pagina interpretato particolarmente adatto alla descrizione di pagine ed immagini, sviluppato da Adobe Systems ed inizialmente usato come linguaggio per il controllo delle stampanti. Il Postscript va considerato come un vero e proprio linguaggio di programmazione. Lo scopo principale per cui venne ideato era lo sviluppo di uno strumento per descrivere pagine di testo e grafica in modo indipendente dalla risoluzione e dal dispositivo di visualizzazione. Grazie a questo linguaggio quindi è possibile trasferire da un computer ad un altro informazioni senza perdita di qualità. Un file postscript può quindi essere visualizzato o stampato alla massima risoluzione consentita su una qualsiasi piattaforma compatibile. (wikipedia)
Grazie a tutti per l attenzione