Hlavní navigace

Gnuplot: seznamte se

Petr Pinkas 8. 8. 2001

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“.

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.

Našli jste v článku chybu?

12. 6. 2005 16:06

Libor (neregistrovaný)
vite nekdo, kde stahnout opravdu Gnuplot 4.0.0 a ne Gnuplot 3.7.1 ? Na vsech odkazech na www.gnuplot.info se stahuje starsi verze. Dik

23. 4. 2005 12:44

Hans Jacob Christian von Grimmelshausen (neregistrovaný)
Prosím, poraďte někdo, jak v GNU Plotu zařídit, aby graf vypadal jako "klasickej" graf (jak se třeba kreslí ve škole :-)), tzn. abych tam měl jenom dvě osy, x a y (pokud mkožno ještě se šipkama na koncích), kde obě procházej počátkem soustavy souřadnic (aby y protínala x v bodě 0! (i v případě, že minimum na ose x není 0 :) )), takže aby tam nebylo to ošklivý "okýnko" ze čtyř os a jestli tohle nejde, tak ten program stojí za úplný kulový ať je sebelepší, to by mě fakt naštval…
120na80.cz: Stoná vaše dítě často? Upravte mu jídelníček

Stoná vaše dítě často? Upravte mu jídelníček

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

DigiZone.cz: Flix TV má set-top box s HEVC

Flix TV má set-top box s HEVC

Podnikatel.cz: Na poslední chvíli šokuje výjimkami v EET

Na poslední chvíli šokuje výjimkami v EET

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Vitalia.cz: Co pomáhá dítěti při zácpě?

Co pomáhá dítěti při zácpě?

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Lupa.cz: Seznam mění vedení. Pavel Zima v čele končí

Seznam mění vedení. Pavel Zima v čele končí

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0