| |
|
Dip.Fisica - Univ.Siena Attività Didattica |
| Istituzioni di Fisica - Sc.Ambientali, Sc.Naturali, Sc.Geologiche (Nuovo Ordinamento) |
TUTORIAL PER LA REALIZZAZIONE DI ISTOGRAMMI CON GNUPLOT
***RICETTA PER DISEGNARE ISTOGRAMMA A BARRE E GAUSSIANA CON GNUPLOT*** *La gaussiana* Questa e' l'espressione generale della gaussiana. Copiate la riga ed incollatela in gnuplot. Premendo invio questa viene caricata in memoria. g(x)=(1/(sqrt(2*pi)*s))*exp(-(x-m)**2/(2*s**2)) I due parametri s ed m sono la deviazione standard ed il valore medio. Potete dichiararli subito dopo aver caricato g(x) semplicemente scrivendo, ad esempio s=2 e premendo invio. Lo stesso per il valore medio m=3 ed invio. La linea di comando plot g(x) disegna la gaussiana. *Gli istogrammi* Per quanto riguarda gli istogrammi possiamo sfruttare un escamotage in gnuplot definendo una funzione per parti (quindi come una linea spezzata). La sintassi non e' semplicissima, vi consiglio di adattare l'esempio riportato alle vostre esigenze. Anche in questo caso conviene definire la funzione a parte come i(x) (chiamatela come volete, a me i(x) ricorda gli istogrammi...): i(x) = 1<x && x<2 ? 2 : 2<x && x<3 ? 3 : 1/0 come si "intuisce" i(x) vale 2 per x compreso tra 1 e 2 e 3 per x compreso tra 2 e 3. La conclusione ": 1/0" serve a far capire a gnuplot che deve interrompere il plot al di fuori di questi due intervalli (il plot si ferma perche' 1/0 e' una scrittura impossibile...). Potete provare a incollare questa linea di comando per caricare i(x). Una volta caricata plot i(x) disegna il grafico di i(x). Per ottenere un grafico leggibile consiglio di scrivere, ad esempio plot [0:10] [0:5] i(x) in modo da dichiarare nella prima parantesi quadra l'intervallo totale delle x su cui si estende la distribuzione e con la seconda limitare le ordinate tra 0 ed almeno il massimo dei valori trovati per la distribuzione. *Mettere insieme istogrammi e gaussiana* Supponiamo di aver fatto 100 misure e di aver suddiviso i risultati in 5 intervalli: (1,3) (3,5) (5,7) (7,9) (9,11) il valore medio sia m=6 e la standard deviation s=3. per poter confrontare la distribuzione ad istogrammi con la gaussiana, e' necessario che l'area di ciascuna barra rappresenti la frazione di misure che cadono in quell'intervallo: i_k=K/(N*l) K indica le misure ottenute nel k-esimo intervallo, N e' il numero totale di misure fatte (ad es. 100) ed l e' la larghezza dell'intervallo (in questo esempio l=2). diciamo di aver ottenuto: i_1=0.05 i_2=0.11 i_3=0.14 i_4=0.12 i_5=0.08 L'area totale degli istogrammi e' pari a 1 (come deve essere). Li possiamo visualizzare con il comando di prima (un po' piu' lungo...) i(x) = 1<x && x<3 ? 0.05 : 3<x && x<5 ? 0.11 : 5<x && x<7 ? 0.14 : 7<x && x<9 ? 0.12 : 9<x && x<11 ? 0.08 : 1/0 visualizziamola con il comando plot [0:12] [0:0.18] i(x) In questo modo non e' bellissima... proviamo a dire a gnuplot di annullare la distribuzione per x<1 ed x>11 i(x) = x<1 ? 0 : 1<x && x<3 ? 0.05 : 3<x && x<5 ? 0.11 : 5<x && x<7 ? 0.14 : 7<x && x<9 ? 0.12 : 9<x && x<11 ? 0.08 : x>11 ? 0 : 1/0 In questo modo mi sembra piu' decente. Proviamo ad aggiungere la gaussiana (seguite le istruzioni di prima con m=6 ed s=3) plot [0:12] [0:0.18] i(x), g(x) questa linea di comando grafica entrambe le funzioni insieme in modo da poterle confrontare. Naturalmente si tratta di una simulazione ad hoc, ma non dovrebbe essere molto diverso con i dati reali. Buon divertimento! Per eventuali chiarimenti: direvelvet-AT-gmail.com
| |
Web designer: Ale Marchini |