Kako narišemo graf meritve

Zakaj rezultate meritev prikažemo na grafu?
  • Človeški možgani tako lažje procesirajo kompleksne ideje in povezave.
  • Graf meritve pogosto razkrije značilnosti, ki jih, če podatke predstavimo v tabeli, ne opazimo.
  • Večina bralcev znanstvenih člankov najprej pogleda slike in se na osnovi njih odloči, ali bodo članek prebrali.

Orodja za risanje grafov

Obstaja vrsta programov, namenjenih risanju grafov:

Zgledi na predavanjih bodo prikazani v programu matplotlib.

Napotki

Znanstvene revije običajno podajo napotke, kako naj grafi v objavljenih člankih izgledajo. Nekaj primerov iz pomembnejših fizikalnih revij:

Pomembno je, da so grafi konsistentni (imajo vsi osi enake debeline, enako velikost pisave -- le ta naj bo enako velika kot v tekstu, ...) To najlažje dosežemo tako, da si pripravimo standarden nabor nastavitev, ki jih potem uporabimo pri vseh grafih. Primer:

In [1]:
from pylab import *
%matplotlib inline

# nastavitve za izris grafov (http://matplotlib.org/1.3.1/users/customizing.html)
rc('text', usetex = True)
rc('font', size = 12, family = 'serif', serif = ['Computer Modern'])
rc('xtick', labelsize = 'small')
rc('ytick', labelsize = 'small')
rc('legend', frameon = False, fontsize = 'medium')
rc('figure', figsize = (5, 3))

Primer enostavnega grafa

Pri nekem poskusu so merili odgovor mišičnega vlakna na adrenalin. Mišično vlakno iz žabjega srca so napeli na mikrosilomer. Vlakno so oblivali z raztopino adrenalina različnih koncentracij in merili silo skrčenja. Rezultati teh meritev so shranjeni v datoteki adrenalin.dat. V prvem stolpcu datoteke je koncentracija adrenalina v \(\mu\)g/l, v drugem pa sila skrčenja, ki so jo normirali na 100% pri največji koncentraciji.

Podatke najprej preberemo iz datoteke v dvodimenzionalno polje.

In [2]:
podatki = loadtxt('adrenalin.dat')
print podatki
[[    1.      0. ]
 [    2.      0. ]
 [    7.     15.3]
 [   10.     34.6]
 [   20.     49.3]
 [   70.     82.6]
 [  200.     96. ]
 [ 1000.    100. ]]

Prebrane podatke prikažemo na grafu, da dobimo občutek o obnašanju izmerjene količine. Pri poskusih običajno kontroliramo eno količino in opazujemo, kako le-ta vpliva na neko drugo količino. Prvo (v našem primeru koncentracijo adrenalina) prikažemo na vodoravni osi grafa, drugo (normirano silo skrčenja) pa na navpični osi.

In [3]:
plot(podatki[:, 0], podatki[:, 1]);
Graf priredimo:
  • Rezultate poskusa prikažemo s točkami, saj so daljice, ki povezujejo izmerjene vrednosti na zgornjem grafu, zavajajoče.
  • Odstranimo barve, če le-te niso nujno potrebne.
  • Ob oseh zapišemo fizikalne količine. Če je prostora dovolj, jih opišemo z besedami, sicer uporabimo ustrezno oznako (oznaka naj bo v ležeči pisavi).
  • Ob vseh fizikalnih količinah zapišemo, v katerih enotah so prikazane (enota naj bo v pokončni pisavi).
  • Dodamo mrežo, da lažje odčitavamo vrednosti.
In [8]:
fig = figure()
plot(podatki[:, 0], podatki[:, 1], 'ko', clip_on = False)
xlabel(r'Koncentracija adrenalina ($\mu$g/l)')
ylabel(r'$F/F_\textrm{max}$ (\%)')
yticks(linspace(0, 100, 5))
grid(True)

Graf shranimo v datoteko adrenalin.pdf. Če je le mogoče, uporabimo vektorski format, ki omogoča poljubno povečavo brez izgube kvalitete slike.

In [9]:
fig.tight_layout(pad = 0.4)
fig.savefig('adrenalin.pdf')

Datoteko z grafom vključimo v članek (vektorski format, bitni format). Nad ali pod grafom dodamo opisno vrstico, ki naj vsebuje številko grafa in opis na grafu prikazanih količin. Graf, skupaj z opisno vrstico, naj bo bralcu razumljiv sam po sebi, brez branja članka!

Naloge

  1. Nariši graf s podatki iz datoteke praznenjeKondenzatorja.txt. To je meritev napetosti na kondenzatorju v voltih (drugi stolpec) v odvisnosti od časa v sekundah (prvi stolpec).

  2. V datoteki Maribor.zip so zbrani vremenski podatki z merilne postaje Maribor-letališče za obdobje od 1. 1. 1977 do 31. 1. 2015. Datoteka TG_STAID003331.txt vsebuje podatke o povprečni dnevni temperaturi (zapis podatkov je razložen v glavi datoteke). Na grafu prikaži, kako se je povprečna dnevna temperatura spreminjala v letu 2010.

  3. Nariši graf s podatki iz datoteke CSL123.MuD. To je meritev absorpcije rentgenskih žarkov (logaritem razmerja vpadnega in prepuščenega toka, drugi stolpec), z energijo fotonov (prvi stolpec) v področju robov L (L3 = 5017.8 eV, L2 = 5365.6 eV, L1 = 5720.4 eV), v cezijevi pari, izvedena na sinhrotronu v Hamburgu. Nariši posebej še ožje območje robu L3 (-50 eV, 150 eV), da bo profil robu razločnejši. Ali meniš, da je ostri vrh priškrnjen zaradi pregrobega koraka v energiji?