Hlavní navigace

Gnuplot: vzhled grafu

Petr Pinkas

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.

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

Našli jste v článku chybu?

19. 4. 2008 14:05

je velice krasny clanek o gnuplot .. ja jej pouzivam a resim problem s tim ze mam nekolik datovych souboru to jak je vykreslit do jednoho grafu vim ale nevim jak mam jednotlivym grafum zadat barvu vykreslovani ? dale nevim jak zobrazit v gnuplotu treba mam datove soubory ze dne 15.4, 16.4,17.4,18.4 a ne y=ms,kB/s podle toho jakou charakteristiku vynasite a na x mam cas 0-24 hod. nevite jak tyto soubory vykreslit do jednoho grafu tak aby sli postupne dny za sebou ? aby zacala charakteristika od 1…

12. 9. 2001 10:35

Petr Mach (neregistrovaný)

Děkuji za hezký seriál, také se těším na další články :-).

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

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

Přehledná titulka, průvodci, responzivita

DigiZone.cz: „Black Friday 2016“: závěrečné zhodnocení

„Black Friday 2016“: závěrečné zhodnocení

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

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

Recenze Westworld: zavraždit a...

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka