martin.swift.is > firstaid > gnuplot.php

Gnuplot má ræsa úr skelinni með skipuninni

gnuplot

og má þá slá inn skipanir til Gnuplot til að vinna með gögn. Þetta er hentugt þegar fikra þarf sig áfram. Ef vitað er gróflega hvað þarf að gera er ég þó hlynntari því að skrifa Gnuplot keyrsluskrá og keyra hana úr skel. Hér fara á eftir helstu skipanir sem þarf til að komast af stað. Ennfremur má benda á óvenjugóða innbyggða hjálp Gnuplot sem vakin er með skipuninni

help <topic>

þar sem <topic> er einhver skipun sem upplýsingar vantar um.

Algengt er að teikna þurfi punkta inn í hnitakerfi og jafnvel sníða línu gegnum punktasafnið. Hér að neðan er sýnd skrá sem leysir þetta vandamál.

Gert er ráð fyrir að gögnin séu í skránni gagnaskra.dat og þar séu x hnit punktanna í fyrsta dálki og y hnitin í öðrum dálki (hver punktur er þá ein lína í skránni).

set encoding iso_8859_1  # Þetta gefur íslensku stafina

set title 'Dæmi um Gnuplot graf'
set ylabel 'Texti við y-ás'
set xlabel 'Texti við x-ás'

set yrange [0:*]         # Tryggir að grafið nái frá y=0.

plot 'gagnaskra.dat'

 # Form skrárinnar valið sem encapsulated postscript
 # og grafið vistað undir nafninu graf.eps
set terminal postscript eps enhanced
set output 'graf.eps'
			
pause -1                 # Bíður eftir að slegið sé á vendihnapp (enter)
replot                   # Skrifar skrána graf.eps

Óvissur

Oft viljum við nota óvissur. Þá er x óvissan sett í þriðja dálk og y óvissan í þann fjórða. Í stað plot-línunnar setjum við þá:

plot 'gagnaskra.dat' with xyerrorbars

Að vísu þarf ekki að raða gildunum í þessa röð í gagnaskránni. Við getum ráðið hvaða dálka á að nota í hvað með using skipuninni. T.d. ef formið á gagnaskránni er svo:

x-gildi  x-óvissa  y-gildi  y-óvissa

þá notum við í stað plot-línunnar:

plot 'gagnaskra.dat' using 1:3:2:4 with xyerrorbars

Skipunina using má einnig nota til að breyta gildum dálkanna, t.d. með

plot 'gagnaskra.dat' using 1:(log($2))

Hér sækir $2 gildið í öðrum dálki. Athugið að log er náttúrulegi logrinn í Gnuplot. Munið eftir svigunum utan um allt saman.

Sníðing á gögnum

Gnuplot býður upp á þann möguleika að sníða fall eftir gögnunum. Fyrst er fallið skilgreint með breytum sem fall af x:

f(x) = a * exp( b*x ) + c

Oft þarf að gefa einhver byrjunargildi á a, b og c sem eru tiltölulega nálægt bestu gildum til að koma Gnuplot af stað.
Svo er gefin skipunin

fit f(x) 'gagnaskra.dat' via a,b,c

Eða fyrir beina línu:

f(x) = a*x + b
fit f(x) 'gagnaskra.dat' using 1:(log($2)) via a,b

Þegar skráin er keyrð finnur Gnuplot gildi á breyturnar sem taldar eru upp aftan við via þannig að ferillinn fari sem næst punktunum.
Til að teikna hvort tveggja punktana og fallið er notað, t.d. fyrir síðasta dæmið:

plot 'gagnaskra.dat' using 1:(log($2)), f(x)

Þegar skráin er tilbúin er hún vistuð og skipunin

gnuplot <nafn skráarinnar>

slegin inn í skelinni (þar sem <nafn skráarinnar> er nafn skráarinnar!).
Ef fall var sniðið við punktasafnið er bestu gildi via-breytanna gefin í skránni fit.log sem Gnuplot býr til.
Þá á einnig að vera komin eps-skráin graf.eps í skráarsafnið sem gnuplot var keyrt úr.

Val á einstökum punktum

Ef vilji er fyrir því að teikna eða sníða einungis ákveðna punkta er every valmöguleikinn notaður. Almennt form er

plot 'file' every <point_incr>
                 :<block_incr>
                  :<start_point>
                   :<start_block>
                    :<end_point>
                     :<end_block>

<Datablock> er safn lína í gagnaskrá sem afmarkað er með auðum línum.

Grískir stafir!

Oft þarf að nota gríska stafi í texta í gnuplot. Með Gnuplot kemur, eins og með öllum góðum linux forritum og pökkum, allgóð skjölun. Fyrir Debian dreifinguna er hana að finna á /usr/share/doc/gnuplot/. Þar í er meðal annars að finna skrána ps_guide.ps.gz sem inniheldur upplýsingar um málskipan (e. syntax) í enhanced postscript sniði. Til að koma fólki af stað er hér dæmi um það hvernig maður gerir þetu:

{/Symbol q}

Bókstafurinn kemur að vísu ekki fram þegar plot-skipunin er keyrð en kemur fram í eps-skjalinu.

Áhugavert

Áhugverð verkfæri í Gnuplot.

Frekari hjálp

Þetta er vissulega ekki nema nasasjón af mætti Gnuplot en vonandi nóg til að koma fólki af stað. Ég vil minna á innbyggðu hjálpina en svo er Internetið óþrjótandi viskubrunnur.