Hlavní navigace

Gnuplot: vzhled grafu

12. 9. 2001
Doba čtení: 5 minut

Sdílet

V dnešním závěrečném dílu se podíváme na několik "okrajových" témat, která pomáhají zlepšit vzhled grafu. Z vlastní zkušenosti vím, že někdy není důležité, co v tom grafu vlastně je, ale spíš, jak to vypadá :).

Vzhled grafu v gnuplotu je ovlivňován hlavně příkazem set. Možností je spousta, a tak je možno si s grafem hodně vyhrát.

Legenda

Pokud není určeno jinak, je legenda (popis jednotlivých křivek v grafu) automaticky dodána. Standardně je umístěna v pravém horním rohu, není orámována a jako popis jednotlivých křivek slouží funkční předpis, respektive název datového souboru.

Umístění a vzhled legendy je možno ovlivnit příkazem set key. Má spoustu parametrů, takže nebudu uvádět poměrně složitý funkční prototyp. Uvedu pouze nejběžnější volby, zbytek je možno získat zapsáním help key.

Nejprve je třeba určit pozici. Máme možnosti left, right, top, bottom, outside, below (umístění vlevo, vpravo, nahoře, dole, pod grafem, vedle grafu). První čtyři možnosti můžeme navíc kombinovat, můžeme tedy zapsat např. set key left bottom.

Pokud toto jednoduché nastavení nestačí, můžeme pozici specifikovat číselně v jednotkách použitých v grafu na jednotlivých osách, např. set key 20, 3.5.

Legendu můžeme i pojmenovat, název zapíšeme jako title „název“. Lze ji také nechat orámovat příkazem set key box (pro legendu bez rámečku použijeme nobox). Barvu a typ čáry rámečku určíme pomocí přepínačů linestyle, případně linetype a linewidth (více jsme o nich hovořili v druhém dílu tohoto seriálu).

Pokud nám nevyhovuje standardní popis jednotlivých křivek, můžeme vlastní názvy dodat u každé vykreslované funkce (tedy u příkazu plot) za přepínačem title. Specifikace legendy může tedy vypadat například takto:

set key left top title "Legenda" box

Prostředí multiplot

Prostředí multiplot nám dává možnost vložit do jednoho obrázku více grafů. Jednu možnost jsem si již ukázali  – jednalo se o umísťováni grafů na různé osy. Prostředí multiplot pak umožňuje vytvářet obrazové výseky a každý použít jako samostatný graf se všemi jeho možnostmi.

Vše, co má být na jednom obrázku, se uzavírá mezi „závorky“ set multiplot a set nomultiplot. Oblasti jednotlivých grafů jsou pak vyznačeny pomocí set size pro určení velikosti a set origin pro určení pozice.

Ukažme si jednoduchý příklad, který daný problém blíže popíše:

set multiplot
set size 1, 1
  set origin 0, 0
  plot sin(x)

  set size 0.5, 0.5
  set origin 0.5, 0.5
  clear
plot cos(x)

  set nomultiplot

Nejprve je určena velikost a počátek prvního grafu (sin(x)). Ten jsme nechali vykreslit na celou plochu a počátek má samozřejmě vlevo dole.

Druhý graf má čtvrtinovou velikost (tedy polovina každé osy) a počátek přesně uprostřed prvního grafu. Takže pravou horní čtvrtinu obrázku bude zabírat graf funkce cos(x). Příkaz clear smaže tuto část plochy grafu, aby se nepřekrývaly křivky obou funkcí.

Všechno, co nastavíme vně prostředí multiplot, se projeví na všech grafech v tomto prostředí vykreslovaných. Ale vzhled každého grafu můžeme samozřejmě upravit. To, co zapíšeme uvnitř tohoto prostředí za příkazy size a origin, se týká pouze tohoto jednoho grafu (resp. i všech dalších, ale ne předchozích – takže pokud provedeme nastavení u každého jednotlivého grafu, bude mít každý svůj vlastní vzhled).

Zní to možná složitě, ale je to opravdu jednoduché. Proveďte si pár pokusů a určitě se do toho dostanete. Často tento způsob využívám, zvláště v případech, kdy je některá část grafu prázdná. Potom se tam dá „vrazit“ další obrázek, který vystihuje nějaký drobný detail. Můžete totiž měnit i rozsah hodnot, a tak vlastně vykreslit výsek původního grafu.

Nakonec je dobré upozornit, že na různých terminálech mohou obrázky vypadat trošku jinak. Pokud například pracujete na obrazovce a potom změníte terminál na postscript, mohou se jednotlivé grafy mírně „rozjet“. Je to dáno různými fonty a podobně. Proto je dobré konečné doladění provést na zvoleném terminálu.

Další drobnůstky

Nyní se už jen v krátkosti podíváme na některá další užitečná nastavení. Každé z nich má spoustu dalších voleb, já je uvedu pouze zjednodušeně. Berte je spíše jako pomůcku, co lze a kde to asi hledat.

Někdy je vhodné pro odečítání hodnot z grafu vykreslit i mřížku. Tu zapneme příkazem set grid. Má spoustu dalších parametrů (jako typ a tloušťku čáry atd.). Vypneme ji příkazem set nogrid.

Hustotu mřížky můžeme nastavit pomocí příkazu set xtics pro osu x (ytics pro osu y a tak dále). Nejjednodušeji použijeme příkaz set xtics 0.5, tj. mřížka bude v grafu s krokem 0,5.

Další možností je použít příkaz jako set xtics 1,0.1,2. Říkáme tak, že mřížka (resp. impulsky v grafu) budou na intervalu <1;2> s krokem 0,1. Implicitní nastavení můžeme vrátit příkazem set xtics autofreq.

Pokud kreslíme nějakou „vysokofrekvenční“ funkci (stačí i sin(x**2)), bude graf pravděpodobně hodně kostrbatý. To je dáno hustotou bodů, pro které je počítána funkční hodnota (mezi nimi aproximace lineární funkcí). Tato hustota je implicitně nastavena na 100 bodů pro celý graf. Změnit to můžeme příkazem set samples x, y. V dvourozměrném prostoru se počítá pouze nastavení pro x, ve 3D už i pro y.

Rád bych se ještě zmínil o nastavení okrajů. Implicitně je nastaven celý rám, tedy okraje kolem celého grafu. Často však chceme pouze klasické okraje, tedy osy x a y. Nastavení se provádí příkazem set border, za kterým následuje číslo, určující okraje. Toto číslo je binární (zadává se však dekadicky), jednotlivé bity (od nejnižšího) určují okraje dole (1), vlevo (2), nahoře (4) a vpravo (8). Další bity nastavují okraje pro vertikální a horní okraje příkazu splot.

Takže chceme-li pouze okraje dole a vlevo, nastavíme set border 3, zpět na všechny čtyři okraje se dostaneme příkazem set border 15. Pokud okraje vůbec nechceme, můžeme použít buď set border 0, nebo čitelnější set noborder. Potom však budeme chtít ještě vypnout i impulsky, a to příkazy set noxtics a set noytics.

UX DAy - tip 2

Rozloučení

Tak, a to je vše, přátelé. Samozřejmě, ne vše, co gnuplot nabízí, ale končí tento seriál. Snad jsem pomohl trošku prosadit tento nádherný a jednoduchý prostředek tvorby grafů, který navíc asi všichni na svých Linuxech máte.

Díky za přízeň, kterou jste věnovali tomuto povídání, a za shovívavost s autorem za chyby, které se určitě tu a tam vyskytly. Přeji všem příjemnou práci s tímto i jinými programy a na „přečtenou“ :) u dalších článků.

Byl pro vás článek přínosný?