V poslední lekci se zaměřím na přesměrování standardního výstupu.
8.11.2004 10:00 | Vladimír Jarý | přečteno 20928×
Pokud spouštíte Gnuplot z nějaké konzole ve Vašem oblíbeném pracovním prostředí, mělo by se (mimo jiné) zobrazit hlášení, že typ terminálu byl nastaven na X11 (terminal type set to 'x11'). To znamená, že grafy budou kresleny do x-ového okna. Ve většině případů nebudete potřebovat toto nastavení měnit. Změnou výstupu však můžete docílit export grafu do mnoha různých formátů (zmíním alespoň gif, png, emf, latex, emtex, PostScript...). Druhým důvodem pro změnu výstupního média je práce na počítači bez grafického serveru.
Typ terminálu se nastavuje příkazem set terminal, jehož jediným povinným parametrem je výstupní terminál. Příkaz může obsahovat další parametry závislé na zvoleném terminálu. Úplnou nabídku přístupných typů získáte zadáním set terminal bez parametrů. Nyní se podíváme na vyladění vzhledu x-ového okna:
set terminal x11 title "Sinusoida" # změna titulku okna plot sin(x)
Příkaz změní výstupní terminál na x11 a nastaví titulek x-ového okna na Sinusoida. Pravděpodobně nejdůležitějším parametrem u terminálu x11 je identifikační číslo okna, pomocí něhož je možné vykreslovat grafy do více oken:
set terminal x11 1 # kresli do okna 1 plot sin(x) set terminal x11 2 # kresli do okna 2 plot cos(x) set terminal x11 1 # a opět do okna 1 replot asin(x)
Tloušťku a styl čáry lze upravit pomocí příkazů set style, barvu lze nastavit přímo při kreslení:
plot x 5 # akvamarinová
Zde je tabulka kódů barev:
Pro lepší orientaci se podívejte na přiložený obrázek. Velikost okna se dá upravit tažením myší, pro zavření stiskněte klávesu q.
Nejprve změníme typ terminálu například na gif:
set terminal gif
Pokud nyní necháme vykreslit nějaký graf (plot x), zobrazí se na konzoli hromada "smetí" Tím smetím je ve skutečnost vlastní obrázek. Bude tedy ještě potřeba přesměrovat výstup z konzole (STDOUT) do souboru:
set output "graf.gif" plot sin(x) unset output # návrat na STDOUT show output # zobraz cíl výstupu
Nyní by se měl v pracovním adresáři vytvořit soubor pojmenovaný graf.gif. Příkazem show output můžete kdykoliv zobrazit jméno výstupního souboru. Pokud není výstupní soubor specifikován, zobrazí se STDOUT. Pro vytvoření souboru musíte mít samozřejmě oprávnění zapisovat do pracovního adresáře. Ještě zopakuji, že také v prostředí Gnuplotu lze používat příkazy pwd (výpis aktuálního adresáře) a cd "adresář" (pro změnu pracovního adresáře). Pomocí přídavných parametrů lze upravovat výsledný vzhled gif obrázku (velikost, barvy nebo fonty, průhlednost). Barvy se zadávají ve tvaru xRRGGBB, kde RR je hexadecimální vyjádření červené, GG zelené a BB modré složky barvy:
set terminal gif large size 400,300 set output "vystup.gif" plot sin(x) set terminal gif large transparent size 640,480\ xffffff \ x000000 x202020 x404040 x606060 \ x808080 xA0A0A0 xC0C0C0 xE0E0E0 plot sin(x),cos(x),asin(x),acos(x),asinh(x),acosh(x)
Parametrem large nastavíme velikost písma (ostatní možnosti jsou tiny, small, medium, large, giant), parametrem transparent zvolíme průhledné pozadí, size upraví velikost obrázku (v pixelech). Pro podrobnější nastavení zadejte help gif
Zcela analogicky by se provedl výstup do jiných souborů, i zde je možné použít nápovědu (help png, help latex).
Pokud máte k dispozici grafický server, nemusíte se exportem do grafických formátů zabývat. Stačí použít nějaký program sloužící ke snímání obrazovky. Součástí pracovního prostředí KDE je velice šikovná utilitka KSnapshot, také Gnome má podobný nástroj (tuším, že se jmenuje Snímač oken Gnome). Funkce snímání okna je dostupná také v GIMPu nebo ImageMagicu.
I zde platí, že lze graf vytisknout například pomocí GIMPu. Pokud ovšem nemáte x server, změňte výstup na postscript:
set terminal postscript set output "tisk.ps"
Nyní vykreslete požadovaný graf a ukončete Gnuplot. Na konzoli zadejte:
hendrek@nebuchadnezzar:~/gnuplot$ lp tisk.ps
Tímto odešlete dokument na výchozí tiskárnu. Můžete vyzkoušet také příkaz ps2pdf, který překonvertuje postscriptový soubor na pdf (Portable Document Format):
hendrek@nebuchadnezzar:~/gnuplot$ ps2pdf tisk.ps vystup.pdf
Při opakovaném volání příkazu plot nebo splot nedochází k přepsání souboru ps, ale k přidání stránky:
set terminal postscript set output "multi.ps" plot sin(x) plot cos(x) splot sin(x)*cos(y)
Program Gnuplot obsahuje rozsáhlou a dobře srozumitelnou nápovědu doplněnou o celou řadu praktických příkladů. Na nápovědu jsem se odvolával v průběhu celého seriálu, takže teď jen shrnu základní informace. Po napsání příkazu help se zobrazí základní informace a seznam kapitol. Pro vyhledání nějakého konkrétního příkazu, stačí zadat help jméno_příkazu. Zejména u příkazu set často využijte možnost zobrazit si seznam přípustných parametrů:
set # vypíše parametry příkazu set set style # vypíše styly kreslení set terminal # vypíše přístupné terminály
Velice užitečné jsou také ukázkové dávkové soubory umístěné typicky v adresáři /usr/doc/gnuplot-4.0.0/demo Jejich prostudováním se naučíte řadu užitečných triků. Další ukázky jsou k dispozici na http://www.gnuplot.info/demo/ a na adrese http://www.gnuplot.info/help.html naleznete řadu odkazů na stránky věnované tomuto programu včetně odkazů na diskuzní skupiny a Wiki.
Program Gnuplot není šířen pod licencí GNU/GPL. Licenci si můžete přečíst zadáním příkazu help copyright. Pokud ovšem nechcete šířit modifikované zdrojové kódy, neklade na Vás licence žádná omezení.
Z FTP serveru je možné stáhnout si verzi pro 32 bitová Windows (soubor gp400win32.zip). Tato verze obsahuje jednoduché grafické rozhraní. Instalace je jednoduchá, stačí rozbalit archiv a spustit binárku. Po rozbalení zabere na disku necelých 6Mb. Gnuplot se tak může stát vítaným pomocníkem při výuce matematiky a fyziky na školách. Jedinou překážkou je tak informovanost a ochota pedagogů.
A to je ode mne vše. Doufám, že Vám Gnuplot pomůže při studiu matematiky a/nebo fyziky.