Gnuplot: seznamte se

8. 8. 2001
Doba čtení: 4 minuty

Sdílet

Jednou jsem u staršího zkušenějšího kamaráda viděl v dokumentaci nějaké grafy. Ve srovnání s těmi mými, které jsem i tak dost pracně generoval v matlabu, vypadaly lépe a jednodušeji zároveň. A tak jsem se seznámil s gnuplotem.

Každý, kdo někdy vypracovával nějakou technickou dokumentaci, se určitě setkal s problémem prezentace výsledků. Není vždy jednoduché navrhnout, vykreslit a poté uložit výsledný graf tak, aby byl jednoduše začlenitelný do dokumentace. A právě pro tyto účely se výborně hodí gnuplot.

Co gnuplot je a k čemu se používá

Jak už jste jistě pochopili, gnuplot je „jednoduchý“ program pro tvorbu grafů. Dokáže zpracovávat jak funkce (knihovní i uživatelem definované), tak i datové soubory. Umožňuje definovat vzhled grafů co nejvíce podle představ „stvořitele“ (schválně zkuste v interaktivním režimu – viz dále – zapsat show all a máte docela dlouho co číst).

Datové soubory pak mohou mít v podstatě libovolnou strukturu, gnuplotu pouze řekneme, která čísla reprezentují jaké hodnoty, případně v jakém formátu jsou zapsána. Navíc disponuje poměrně sofistikovanou matematikou, takže není problém prokládat body křivkami, aniž bychom cokoli předem počítali. A proniknete-li do něj hlouběji, uvidíte, že má opravdu co nabídnout.

Spouštění gnuplotu

Gnuplot můžeme spouštět ve dvou režimech – interaktivně a dávkově. Pokud spustíme gnuplot s parametry, berou se jako názvy vstupních souborů, které obsahují příkazy gnuplotu, a jsou pak v tomto pořadí vykonány. Existuje zde jeden speciální případ: pomlčka („-“). Pokud je použita jako název souboru, přepne program do interaktivního režimu. To může být někdy výhodné, pokud v průběhu vykonávání makra chceme dát uživateli možnost zásahu.

Spustíme-li program bez parametrů, dostaneme se do interaktivního režimu (ohlásí se promptem gnuplot>). Pak můžeme zadávat příkazy, které jsou rovnou prováděny.

Použití nápovědy

Kromě manuálové stránky je s gnuplotem standardně dodáván i obsáhlý manuál v PostScriptu (116 stran, takže pěkný bumbrlíček) i HTML. Na mém počítači se nacházejí v adresáři /usr/share/doc/gnu­plot.

V interaktivním režimu však můžeme použít i vestavěnou nápovědu, která je dle mého názoru velmi dobře zpracována. Někdy je, pravda, trochu „ukecaná“, ale většinou hodně pomůže. Vyvoláme ji příkazem help, nebo zapsáním otazníku („?“).

Pokud ji spustíme pouze takto, bez dalšího parametru, vypíše se základní nápověda ke gnuplotu a pak nabídka témat. Prompt se změní na help topic: a gnuplot očekává zadání tématu. Máme několik možností:

  • zapsat název tématu a posunout se tak dále v hierarchii nápovědy, až se dostaneme k požadovanému tématu
  • zapsat název jiného tématu, které není nabízeno (např. název příkazu, ke kterému chceme získat nápovědu) a gnuplot tam rovnou odskočí
  • otazníkem („?“) vynutit opětné vypsání možných témat pro pokračování
  • klávesou Enter se vrátit o úroveň výše.

Samozřejmě je možné zapsat např. help postscript (případně ? postscript) a dostaneme se tak přímo k popisu postscriptového terminálu, který se využívá ve spojení s příkazem set, a normálně se nachází asi až na páté úrovni.

V neposlední řadě je pak možno prozkoumat několik ukázkových souborů – mnohé jsou velmi pěkné a při bližším pohledu až překvapivě jednoduché. Nacházejí se tam, kde ostatní dokumentace, v podadresáři ./examples, a mají koncovku .dem.

Ještě než začneme

Na závěr ještě několik důležitých věcí, které je dobré vědět, jinak mohou způsobit problémy:

  • gnuplot je case sensitive; to znamená, že v příkazech rozlišuje velká a malá písmena
  • na jedné řádce může být libovolný počet příkazů oddělených středníky; výjimkou jsou pouze příkazy load a call, které musí být použity jako poslední
  • mnoho příkazů gnuplotu má dva a více parametrů – ty musí být zadány ve správném pořadí, jinak nebudou fungovat; nepovinné parametry mohou být samozřejmě vynechány
  • jednotlivé příkazy mohou přesahovat několik řádků; to že není příkaz ukončen je signalizováno obráceným lomítkem („\“) na konci každé neukončené řádky
  • řetězce mohou být uzavřeny do uvozovek i apostrofů (tedy load „soubor“ i load ‚soubor‘), v jejich zpracování je však rozdíl: v uvozovkách jsou nahrazovány tzv. backslash sequence (např. „\n“ pro přechod na novou řádku), zatímco v apostrofech se chápou jako obyčejná posloupnost znaků
  • můžete využívat i příkazy „klasického“ shellu, pouze před ně musíte dát vykřičník (tedy např. !ls vypíše obsah aktuálního adresáře.

Závěrem

Tento úvodní článek neukazuje, jak vlastně v gnuplotu kreslit. Tedy vězte, že základní příkaz pro kreslení 2D grafů je plot, 3D grafů pak splot. Podrobněji bude vytváření grafů probráno v dalších pokračováních tohoto seriálu. Podíváme se také na datové soubory a jejich možnosti, prokládání bodů křivkami a snad se dostane i na další „specialitky“.

bitcoin_skoleni

Pro nedočkavce uvedu nakonec jednoduchý, ale názorný příklad. Vykreslí sinusovku na intervalu ← 3,14; 3,14> s vyšrafovanou oblastí mezi osou x a křivkou. Výstup je uložen do postscriptového souboru v adresáři /tmp.

set terminal postscript
set output "/tmp/sinusovka.ps"

set grid
set nokey
set title "Sinusovka"

plot [-3.14:3.14] sin(x), sin(x) with impulses

Tak, a nyní již můžete začít experimentovat a vytvářet první grafy. Příjemnou zábavu.

Seriál: Gnuplot

Autor článku