Výfuk wallpaper

Gnuplot: grafy neznetvořte, ale tvořte

Při řešení experimentální úlohy jsi si jistě všiml(a), že nezanedbatelnou část tvé práce zabere zpracování dat. Toto zpracování je nadmíru důležité, neboť podle výstupů se mohou ostatní lidé přesvědčit, jestli experiment proběhl dobře a obsahuje zajímavý výsledek. Čím hezčí a přehlednější tvé řešení bude, tím větší je šance, že ostatní zaujme a že se mu povede předat zamýšlenou zprávu.

Nedílnou součást prezentace měření jsou i grafy a pokud je netvoříš ručně, jako se to dělalo dříve, závisí jejich úspěch na softwaru, který si vybereš k jejich tvorbě. Na této stránce předvedeme program jménem Gnuplot, ve kterém můžeš tvořit pěkné, vědecky vypadající grafy. Používáme jej ve Výfuku na vynášení grafů naměřených dat ve vzorových řešeních experimentálních úloh a nemůžeme si jej vynachválit. Pokud budeš tento návod pozorně sledovat a program si nainstaluješ, jsme přesvědčeni, že přehledné grafy zvládneš tvořit i ty!

Princip programu

Gnuplot se neovládá tak jako většina běžných programů typu MS Excel. Ovládá se tak, že mu říkáme, co má dělat – píšeme příkazy do příkazové řádky a on se podle nich zařídí. Je to podobné jako kdybychom si povídali s kamarádem (jen váš kamarád pravděpodobně nedokáže kreslit tak pěkné grafy). Kdo umí řeč Gnuplotu, tvoří grafy tak, že jen řekne „vytvoř graf“.

Instalace

Pro instalaci si stačí stáhnout instalační soubor (kliknutím na Download latest version) z oficiální gnuplotí stránky, soubor spustit a řídit se instalačními instrukcemi.

Následně program můžete spustit, když si jej vyhledáte v programech (Start –> napiš Gnuplot –> Enter), či poklikáte na jeho ikonu wgnuplot.exe. Po spuštění se objeví prosté okno, do kterého můžete něco napsat. Na následujících řádcích vás naučíme příkazy, pomocí kterých Gnuplot splní vaše přání.

Příkaz plot

Nejdůležitější příkaz se jmenuje plot (anglicky „vykreslit“ [graf]). Zkuste ho nyní použít tím, že zadáte následující příkaz (napíšete a stisknete Enter):

plot x**2

Mělo by se nyní objevit okno s grafem kvadratické funkce $y=x^2$, což se dalo očekávat.

Příkaz plot tedy vykreslí do grafu to, co mu řekneme, tedy to, co napíšeme za ním (neboli co je v argumentu příkazu plot). Můžeme vykreslit funkce $\sin(x)$, $\cos(x)$ , $\exp(x)$ atd.,1) nezapomínejme však, že Gnuplot používá desetinnou tečku (ne čárku!) a mocnění se neznačí pomocí stříšky (^), nýbrž pomocí dvojitého násobení (**). Můžete si zkusit vynést další funkce, například lineární funkci y=2*x+4 nebo odmocninnou funkci $y=\sqrt{-x+5}$ (pomocí příkazu sqrt(-x+5)). Je také možné vykreslit více funkcí naráz, oddělíme-li je čárkou, třeba takto:

plot sin(x), cos(x)

Na horní liště si můžeme všimnout několika tlačítek; nejdůležitější je z nich je tlačítko mřížky, jímž je možno načíst mřížku (nakreslit do grafu čtvercovou síť). To lze nahradit příkazem set grid a vypnout pomocí unset grid. Druhým tlačítkem zleva můžete graf uložit jako obrázek. Ostatní tlačítka si popisovat nebudeme, protože si je můžete vyzkoušet sami.

Jak upravit graf

Někdy se stane, že graf funkce, kterou jsme vykreslili, neodpovídá našim požadavkům. Např. funkce vyvolaná příkazem plot sin(x) nemusí být zobrazená tak pěkně, jak bychom chtěli, navíc chybí popisky os a legenda není pěkná. Nyní si ukážeme, jak toto změnit.

  • Pomocí set ylabel 'y' a set xlabel 'x' dodáme2) popisky os.
  • Pomocí set title 'Sinusoida' nastavíme název grafu.
  • Pomocí set xrange[0:6.5] upravíme rozsah osy $x$.
  • Pomocí set xtics 0.5*3.14159 nastavíme, že se na ose čísluje po půl pí.
  • Nakonec můžeme graf vykreslit a přejmenovat jeho legendu příkazem plot sin(x) title 'y=sin(x)' .

Pokud si tyto příkazy uložíme do souboru s koncovkou .gnu, tak je potom můžeme načíst pouze příkazem load 'cesta_k_souboru.gnu' (nebo se dá soubor jednoduše přetáhnout do okna a stisknout Enter). Tyto příkazy jsme tedy použili:

set ylabel "y"
set xlabel "x"
set xrange [0:6.5]
set xtics 0.5*3.14159
set title "Sinusoida"
plot sin(x) title "y=sin(x)"

a vyšel z nich graf níže. Ještě jsme mohli použít příkaz set key left (nebo right nebo bottom nebo top nebo center) pro přenastavení pozice legendy.

Jak vynášet data do grafu

Může se stát, že budeme chtít vynést svoje vlastní data, třeba z experimentu, do grafu. V tomto případě Gnuplot může pomoci. Stačí si vytvořit soubor s koncovkou .txt nebo .csv, ve kterém budou následovně data:

#Popisek x	Popisek y
Hodnotax1	Hodnotax2
...

Data mohou být oddělena jak tabulátorem, tak mezerou. Křížek # značí komentář a to, co je za ním, Gnuplot ignoruje. Následně příkazem plot 'cesta_k_souboru.txt' lze vykreslit data. Pokud nemůžeme najít cestu k souboru, stačí jej do Gnuplotu přetáhnout a přepsat load na plot u příkazu, který se tam objeví.

Otestujme si vynášení dat tím, že zkusíme vytvořit ten samý graf jako v jedné úloze z Výfuku. Nejdřív si proto napišme data do správného formátu (opět pozor, musí mít desetinné tečky):

#m/kg	t/s
0.1	24
0.2	44
0.3	56
0.4	70
0.5	86
0.6	99
0.7	113
0.8	136
0.9	151
1.0	165

Data pak uložíme do souboru s názvem data.txt (ale může to být i jiný název) a následně je vyneseme pomocí příkazu plot 'data.txt' . Dostaneme pak tento výstup:

Pozn.: Určitě jste se ve škole učili, že při vynášení naměřených dat do grafu se za žádnou cenu nesmí propojovat jednotlivé body – naměřené hodnoty. Kdybychom však přeci jen body propojit potřebovali, tak za cestu k souboru v příkazu plot napíšeme:

plot "data.txt" with lines 

Jak fitovat

Pravděpodobně se stane, že někdy budeme mít vynesena nějaká data, a budeme je chtít fitovat, neboli proložit funkcí. I to lze v Gnuplotu provést. Ukážeme si to na příkladu dat z minulé Výfučí úlohy. Uvedeme zde návod krok po kroku, jak se to dělá:

  1. Nejdřív musíme odhadnout, jaký tvar má funkce, kterou chceme graf proložit. V tomto případě to nejspíše bude lineární závislost, neboli $f=x\cdot a+c$.
  2. Funkci si v gnuplotu nadefinujme tak, že napíšeme do terminálu její předpis: f(x) = a*x+c.
    • Všimněte si, že proměnná je $x$, ale $a$ i $c$ jsou parametry, které zatím nevíme.
  3. Nyní musí program vypočíst všechny neznámé parametry. Napište proto: fit f(x) 'data.txt' via a, c
    • Program vám vypíše vypočtené fitovací konstanty s nejistotami, které se mohou hodit.
  4. Nakonec vyneseme jak funkci f(x), tak data do grafu takto: plot 'data.txt' title 'naměřená data', f(x) title 'lineární fit'

Měl by vyjít takovýto graf:

Samozřejmě můžete zkusit data proložit i jinými závislostmi, ale pak při příkazu fit musíte při via uvést všechny parametry.

Další vymoženosti Gnuplotu

  • Lze vykreslovat i 3D grafy. Stačí mít soubor dat se třemi sloupci, nebo funkci o dvou proměnných. Stará se o to funkce splot. Zkuste si zadat následující řádek a uvidíte (se vzniklým grafem jde i manipulovat myší):
splot x**2 + y**2
  • Lze vykreslovat i errorbary (chybové úsečky). Stačí k tomu mít soubor s daty se třemi sloupečky, kde třetí sloupec jsou chybové úsečky v ose $x$ a napsat
plot "cesta_k_souboru.txt" with yerrorbars
  • Lze si také vybrat barvu a typ čáry pro plotovaná data. Základní změna barvy se provede následujícím příkazem (lt znamená line type a colour nahraďte nějakou předdefinovanou barvou, třeba blue):
plot sin(x) lt rgb "colour"
  • Příkaz set decimalsign ',' nastaví desetinnou čárku.
  • Příkaz set encoding utf8 povolí české znaky.

Jak psát LaTeXové popisky os

Gnuplot má různé tzv. terminály, které značí, v jakém formátu bude výstup. Jeden z nich je i LaTeXový formát, který se hodí, když chcete mít řecká písmena v popiscích os. Používá se následovně:

set term epslatex enhanced standalone
set output "sample.tex"
plot x**2
set output

Tímto se vytvoří soubor sample.tex a sample.eps ve složce, kde operujete (ta lze změnit pomocí cd 'cesta_ke_složce' ). Nyní v terminálu musíte soubor zkompilovat pomocí pdflatex sample.tex. Můžete ale kompilovat i z gnuplotu pomocí příkazu

system('pdflatex sample.tex')
1)
Nic si nedělejte z toho, že tyto funkce neznáte, zatím nejsou potřeba.
2)
Jako uvozovky lze použít buď " nebo ' , je to jedno.
Tento web používá cookies. Používáním těchto stránek souhlasíte s ukládáním cookies do vašeho počítače. Také berete na vědomí, že jste si přečetli a porozuměli našim Zásadám ochrany osobních údajů. Pokud nesouhlasíte s odchodem z webu.Více informací