Ugrás a tartalomhoz

Számítógépes alapismeretek

Stéger József, Fekete Attila (2013)

ELTE-TTK

3 Ábrakészítés

3 Ábrakészítés

A dokumentumok készítésének egyik alapvető feladata az igényes ábrák alkotása és beillesztése a dokumentumba. Ennek a feladatnak az ellátására fejlesztették ki a gnuplot nevű alkalmazást. A gnuplot egy parancssor vezérelt interaktív adat- és függvényábrázoló program. A program szinte minden használatban lévő operációs rendszerre megtalálható és ingyenesen letölthető.

A gnuplot segítségével képesek leszünk pl. analitikus alakban ismert függvényeket kirajzolni, adatfájlokat tartalmát grafikusan megjeleníteni, két és háromdimenziós grafikonokat készíteni, fájlok oszlopaival egyszerű matematikai műveleteket végezni, adatokra görbét illeszteni, animációt levetíteni, számos grafikus formátumban elmenteni az elkészült ábrát.

A gnuplot az összes felsorolt feladatot nem csak interaktív módban, hanem szkriptek alapján végezve is képes ellátni.

3.1 Gnuplot olvasnivalók

A gnuplot megismeréséhez szintén hatalmas mennyiségű online elérhető segédlet áll rendelkezésre. Ezek közül az alábbi magyar és angol nyelvűeket ajánljuk az olvasó figyelemébe:

3.2 A gnuplot interaktív használata

A gnuplot programot interaktív vagy szkript értelmező üzemmódban használhatjuk. Az utasításkészletet tekintve nincs gyakorlati különbség a két üzemmód között, különbség csak a program futtatásának módjában van. Míg interaktív módban sorról-sorra, parancsról-parancsra adhatjuk meg az utasításokat, addig a szkript értelmező módban a már előre megírt utasításokat egy fájlból olvastatjuk be az ábrázoló programmal. Az interaktív módban könnyen kísérletezhetünk az ábra részleteivel, szkript üzemmódot pedig akkor célszerű használnunk, ha több hasonló ábra létrehozását szeretnénk automatizálni, vagy ha egy ábránk elkészítését szeretnénk rögzíteni. Szkriptek használatával lényegesen lerövidítjük a munkánkra szánt időt. Ebben a fejezetben elsőként az interaktív használattal ismerkedünk meg.

A gnuplot programot az alábbi parancs kiadásával tudjuk elindítani:

 user@host:$   gnuplot

Ennek hatására a terminálablakban megjelenik a gnuplot prompt, ahova a utasításokat fogjuk begépelni. Kilépni az exit, a quit parancsokkal, vagy a <Ctrl-d> billentyűkombináció leütésével tudunk.

Az ábrákat néhány paranccsal és azok egzotikus paraméterezésével készíthetjük el. Jellemzően a paramétereknek csak kis töredékét tartja az átlagos felhasználó fejben, a részleteket a dokumentációban lehet megkeresni.

Általános segítséget a már elindított gnuplot programban a help paranccsal kérhetünk. A help parancs segítségével rengeteg részletet tudhatunk meg az utasításokról, illetve azok paraméterezéséről. Ha valamely konkrét parancsról szeretnénk többet megtudni akkor a help parancs után adjuk meg a parancs nevét. Például a rövidesen bemutatásra kerülő plot parancsról a help plot paranccsal tudhatunk meg részleteket.

3.2.1 A plot parancs

A plot utasítás a gnuplot legtöbbet használt parancsa. A plot parancs segítségével tudunk adatokat illetve függvényeket ábrázolni. Számos, az ábrázolással kapcsolatos, esztétikai beállítás is megadható ennek a parancsnak a paramétereiként.

Az alábbi, legegyszerűbb példával szemléltethetjük a plot (ábrázolás) parancs használatát:

 gnuplot>   plot sin(x)

Ennek hatására a 10 ábrán látható szinusz függvény jelenik meg x[-10;10] tartományon, folytonos piros vonallal.

10. ábra. A $\sin(x)$ függvény grafikonja \emphgnuplot tal.

3.2.1.1 Függvények ábrázolása

A plot parancs segítségével lehetőségünk van zárt, illetve paraméteres alakban megadott függvények ábrázolására. A 10. táblázatban a leggyakrabban használt beépített függvényeket gyűjtjük össze. Fontos megjegyezni, hogy a szögfüggvények radiánban értelmezettek. A program kezeli a komplex számokat, így a függvények megengedik a komplex értékű változókat is.

10. táblázat. A \emphgnuplot\ által támogatott alapfüggvények

A beépített függvényekből saját függvényeket is definiálhatunk. Próbáljuk ki a következő gnuplot parancsokat:

 gnuplot>   f(t) = sin(t) + a * cos(t) gnuplot>   a = 2 gnuplot>   plot f(x)

Az első sorban adtuk meg a függvény definícióját. A definícióban először megadtuk az új függvény nevét, majd zárójelben felsoroltuk annak változóit. Az értékadó operátor = után szerepel a függvénydefiníció kifejtése.

A függvénydefiníció kifejtésében szerepelhetnek a változó- és függvényneveken kívül további címkék is, melyeket paramétereknek nevezünk. Ahhoz, hogy egy függvényt használhassuk például ábrázoljuk , a benne szereplő paramétereknek külön parancsban értéket kell adnunk, hasonlóan a fenti példa második sorához.

A fenti példában f a függvény neve, t a változó neve, a pedig egy paraméter. Természetesen több változót is megadhatunk, ezeket a függvény neve utáni zárójelben vesszővel kell elválasztanunk egymástól.

A függvények, a változók és a paraméterek nevei egy vagy több betűből, számból, illetve aláhúzásból állhatnak, például f1, azzal a megkötéssel, hogy a nevek nem kezdődhetnek számmal.

A változók és a paraméterek különböző szerepet játszanak a függvények definícióiban. A függvények ábrázolásánál csak változókat használhatunk, függvények adatokra való illesztésénél pedig paramétereket. Ezen kívül a paramétereket globális változóként is használhatjuk, azaz ha több függvény definíciójában ugyanazt a paramétert használjuk, akkor ennek a paraméternek az értéke az összes függvény értékét befolyásolja.

A fenti példa harmadik sorában a plot paranccsal ábrázoltuk a függvényt. Vegyük észre, hogy a plot utasításánál az x változónevet adtuk meg, nem a függvény definíciójában szereplő t vátlozót. Ez nem véletlen, a normál egyváltozós ábrázolásnál kötelezően x jelöli a függvény változóját, kétváltozós (térbeli) ábrázolásnál pedig kötelezően x és y.

3.2.1.2 Adatsor ábrázolása

A gnuplot használata során nagyon gyakran nem analitikus függvényeket, hanem valamilyen számszerű adatsort szeretnénk ábrázolni. Ehhez szükségünk van az adatokat tartalmazó ASCII fájlra, amiben az adatok táblázatszerűen vannak elrendezve. Az adatfájlban az egy sorban lévő adatokat szóközzel, vagy tabulátorral kell elválasztani.[17]

Adatok ábrázolásánál leggyakrabban az adatfájl egyik oszlopában található mennyiségeket ábrázoljuk egy másik oszlopának függvényében. Látni fogjuk, hogy az adatokon függvénytranszformációt is végezhetünk. Ilyen transzformációk segítségével akár több oszlop értékeit is felhasználhatjuk.

Az adatsorok ábrázolásának kipróbálásához töltsük el a gyakorlat weboldaláról a mintafájlt, melyet mentsünk el sinusadatok.dat néven. Az adatfájlban lévő adatokat szintén a plot paranccsal ábrázolhatjuk. Az ábrázoláshoz a plot parancs után a fájlnevet idézőjelek között kell megadni:

 gnuplot>   plot "sinusadatok.dat"

Ha az adatfájl nem abban a könyvtárban van, ahonnan a gnuplot ot elindítottuk, akkor meg kell adnunk az elérési útvonalat is (ld. 8.4. fejezet).

Ezen a ponton meg kell jegyezni, hogy a gnuplot ban a parancsokat és az opcionális paramétereket gyakran addig rövidíthetjük, amíg a rövidítés egyértelmű. A plot és a help parancs esetén elegendő az kezdőbetűt megadnunk. Ezt a lehetőséget a következő példákban ki is próbálhatjuk:

 gnuplot>   p "sinusadatok.dat"

A gnuplot a több oszlopos a fájlok esetén alapértelmezett esetben az első oszlop függvényében ábrázolja a második oszlop adatait. Amennyiben csak egy oszlopa van az adatfájlnak akkor ezt az oszlopot ábrázolja az adott sor sorszámának függvényében.

3.2.1.3 Adatoszlopok használata

A plot parancs működését számos opcionális kapcsoló segítségével szabályozhatjuk. A fontos megjegyeznünk, hogy kapcsolók csak meghatározott sorrendben adhatók meg.

Az első, és egyik leggyakrabban használt kapcsoló a using, mellyel megadhatjuk, hogy a megadott adatfájl mely oszlopait ábrázolja a gnuplot . Ehhez a legegyszerűbb esetben a using kapcsoló után két számot kell megadnunk kettősponttal elválasztva; az első szám az x, a második pedig az y adatokat tartalmazó oszlop sorszámát jelenti. A nulladik oszlopnak speciális jelentése van, ezzel hivatkozhatunk arra, hogy az adott adat hanyadik sorban szerepel.

A többoszlopos fájlok alapértelmezett ábrázolását jeleníti meg például a

 gnuplot>   plot "sinusadatok.dat" using 1:2

parancs.

Nemcsak az oszlopok sorszámát adhatjuk meg azonban, hanem tetszőleges függvényt is alkalmazhatunk az adatokra. Ábrázoljuk például a harmadik oszlop értékeinek kétszeresét a második oszlop függvényében! Ezt a következő paranccsal tehetjük meg:

 gnuplot>   p "sinusadatok.dat" u 2:(2*$3)

Vegyük észre, hogy amikor matematikai műveletet kívánunk végezni az adott oszlop elemeivel, akkor a kifejezést zárójelbe kell tenni, valamint az oszlopokra a jel beiktatásával kell hivatkoznunk, ellenkező esetben számkonstansként és nem az oszlop azonosítójaként értelmezi a program.

Egyetlen plot parancs kiadásával egyszerre több függvényt illetve adatgörbét is ábrázolhatunk. Ilyenkor az ábrázolandó görbéket vesszővel (,) kell elválasztanunk egymástól. Hasznos megjegyezni, hogy ha egy állomány adataiból egyszerre több görbét is készítünk egyszerre, akkor másodjára már elhagyhatjuk a fájl nevét arra üres fájlnévvel hivatkozhatunk:

 gnuplot>   plot "sinusadatok.dat" u 2:(2*$3), "" u (0.7*$2):(2*$3), sin(x)
3.2.1.4 Jelmagyarázat

Ha több függvényt vagy adatot ábrázolunk ugyanazon az ábrán, akkor fontos megadni, hogy a különféle vonal- vagy ponttípusok mit jelentenek. Ezt az információt a jelmagyarázatban adhatjuk meg. Alapesetben a gnuplot az ábra jobb felső sarkában minden vonal- és ponttípus mellé kiírja a megadott analítikus függvényeket illetve a megadott fájlnevet és a using opciót.

Amennyiben módosítani szeretnénk a jelmagyarázatot, akkor a using kapcsoló utáni title kapcsolóval tehetjük meg:

 gnuplot>   plot "sinusadatok.dat" u 1:3 t "adatok", sin(x) t ""

A fenti példa eredménye látható a 11. ábrán. Amennyiben valamely vonalhoz vagy szimbólumhoz nem kívánunk jelmagyarázatot fűzni, a title kapcsoló után adjunk meg üres címet, vagy használjuk a notitle kapcsolót.

11. ábra. \emphgnuplot\ ábra jelmagyarázattal. A jelmagyarázat az ábra belső részének jobb felső sarkában található.

3.2.1.5 Az ábrázolási tartomány

A korábbi példákban az x- és y-tengelyek ábrázolási tartományát minden esetben automatikusan állította be a program. Amennyiben másként nem rendelkezünk, a gnuplot a függvényeket a [-10;10] intervallumon, az adatsorokat pedig azok értelmezési tartományán jeleníti meg. Az y-tengelyt alapesetben úgy állítja be a gnuplot , hogy az ábrázolt függvény vagy adat teljes egészében látható legyen az ábrán.

Az ábrázolási tartományokat természetesen szabadon megváltoztathatjuk. Az alapértelmezett ábrázolási tartományokat a plot parancs után megadott, [tól:ig] formátumú opcionális argumentumokkal lehet felülbírálni. Az első ilyen argumentummal az x tartományt, a másodikkal az y tartományt, stb. lehet beállítani, például

 gnuplot>   plot [100:200] "sinusadatok.dat"

Ha valamely határnak a * jelet adjuk meg, akkor a gnuplot az adott határt automatikusan fogja beállítani, ha pedig bármely határt elhagyhatjuk, akkor a gnuplot az éppen alapértelmezett határt fogja használni.

 gnuplot>   plot [100:] "sinusadatok.dat" gnuplot>   plot [100:*] "sinusadatok.dat"

Előfordulhat, hogy csak az y tengely ábrázolási tartományát akarjuk beállítani. Mivel az egyértelműség megköveteli, hogy az x-tengelyre vonatkozó tartomány is szerepeljen, ezért ha az x tengelyhez az alapértelmezett értékeket szeretnénk használni, akkor mind az alsó, mind a felső határokat hagyjuk üresen:

 gnuplot>   plot [][2:4] "sinusadatok.dat"
3.2.1.6 Görbék megjelenésének formázása

A gnuplot szinte minden állítható tulajdonságához vannak alapértelmezett értékek, így nem szükséges minden egyes részletet beállítanunk, hogy gyorsan ábrázolni tudjunk egy görbét. Azonban amennyiben az eredeti beállítások nekünk nem felelnek meg, akkor ezeket át tudjuk állítani. Ilyenek az ábrázolt görbék vonal, vagy szimbólum típusai, színei és egyéb jellemzői is.

Vonalstílus Az ábrázolt mennyiségeket a gnuplot alapvetően kétféle módon jeleníti meg: a függvényeket vonalakkal, az adatsorokat pedig szimbólumokkal. Ettől természetesen eltérhetünk a with (röviden w) kapcsoló használatával:

 gnuplot>   plot "sinusadatok.dat" with lines gnuplot>   plot "sinusadatok.dat" w l

11. táblázat. A \emphwith kapcsolóval megadható fontosabb vonal-stílusok

A 11. táblázatban a leggyakrabban használt görbe ábrázolási stílusokat foglaljuk össze, a teljes készletet a help plot with paranccsal nézhetjük meg a dokumentációban.

Vonalszín és vonaltípus A vonalak, szimbólumok színét a plot parancs linecolor kapcsolójával lehet beállítani. A lehetséges értékek 0 és 7 közötti egész számok, amik a különféle színeknek felelnek meg. A következő parancs a kék vonallal köti össze az adatpontokat:

 gnuplot>   plot "sinusadatok.dat" w l lc 3

A vonalakat színük mellett szaggatottságukkal is megkülönböztethetjük egymástól. Ez a lehetőség különösen fekete-fehér nyomtatás esetén fontos. A vonalak szaggatottságát a plot parancs linetype kapcsolója után megadott egész számmal szabályozhatjuk, például:

 gnuplot>   plot "sinusadatok.dat" w l lt 2

Fontos megjegyeznünk, hogy a linetype kapcsoló hatása a megjelenítő terminál típusa szerint más és más lehet. A későbbiekben ismertetett eps kimenet esetében például a szín és a vonal szaggatottság egyszerre változik. Egy adott terminál lehetséges megjelenési beállításaihoz nyújt segítséget a test parancs, melynek eps kimenete a 12. ábrán látható.

12. ábra. A \emphgnuplot\ \emphtest parancsának kimenete postscript terminálon. A jobb oldalon látható az adott sorszámhoz tartozó vonal- és ponttípus.

A linetype kapcsolónak 0 vagy -1 értéket is adunk. Az előbbivel vékony sűrűn pontozott vonalat, az utóbbival vastag folytonos vonalat kapunk, mindkettőt fekete színnel.

Vonalvastagság Az ábrázolt vonalak vastagságát is állíthatjuk, ami különösen fontos a nyomtatásra szánt ábrák esetén. Általában a képernyőn még jól látszó vonalak nyomtatásban nehezen észrevehetőek, túlságosan vékonyak lesznek. Ennek elkerülésére a nyomtatásra szánt dokumentumokban szükséges lehet a vonalak vastagságát megnövelni. Ezt a plot parancs linewidth (röviden lw) kapcsolójának használatával lehet elérni:

 gnuplot>   plot sin(x) w l lw 5

A fenti példában ötös vastagságú vonallal ábrázoljuk a szinusz-függvényt.

A pontok típusa A mérési adatokat általában pontokkal ábrázoljuk. Az ezekhez használt szimbólumokat a plot parancs pointtype (pt) kapcsolójával állíthatjuk be. A kapcsoló után megadott számmal adhatjuk meg, hogy melyik szimbólumot szeretnénk használni. A lehetséges szimbólumokat a gnuplot test parancsára megjelenő ábra jobb szélén láthatjuk felsorolva.

 gnuplot>   plot sin(x) w p pt 6

A fenti példa a hatos sorszámú (belül üres kör alakú) szimbólum típust használja.

A pontok mérete Az adatpontokat reprezentáló szimbólumok méretének beállításához használjuk a plot parancs pointsize kapcsolóját. Itt lehetőségünk van lebegőpontos számértékeket is megadni a finom beállítás érdekében.

 gnuplot>   plot sin(x) w p pt 6 ps 2.5

A fenti példa 2.5-ös méretű körökkel ábrázolja az adatpontokat. Próbáljunk ki több különböző méretet, akár 1-nél kisebb értékeket is!

3.2.2 Újrarajzolás

A replot paranccsal megismételhetjük az előzőleg kiadott plot parancsot. Ez akkor hasnos például, ha szeretnénk a következő fejezetben ismertetett set parancs beállításaival az ábrát megnézni, illetve ha szeretnénk ugyanazt az ábrát különböző terminálokon ábrázolni.

A replot parancs után az ábrázolási tartományon kívül a plot parancs bármely argumentuma megadható. Ennek hatása megegyezik azzal, mintha az előző plot parancs után, az elválasztó vessző után, adtuk volna a meg a replot parancs argumentumát.

3.2.3 A set parancs

A gnuplot program egyik leghasznosabb tulajdonsága, hogy az ábra minden apró részlete beállítható. A plot parancs opcionális argumentumai segítségével az ábra számos elemét szabadon beállíthatjuk, de ezek a beállítások mindíg az adott plot parancsra vonatkoznak. Ha egy új plot parancsot adunk ki, akkor ezeket a beállításokat újra meg kell adni.

A set paranccsal lehetőségünk van arra, hogy az alapértelmezett beállításokat változtassuk meg. Az így megadott beállítások az összes későbbi plot parancsra vonatkoznak, hacsak nem módosítjuk a plot parancson belül a beállításokat.

A set paranccsal számos olyan beállítás is megadható, amelyet a plot parancs segítségével nem tudunk megváltoztatni, például a kimenet, a terminál típusa, vagy a tengelyfeliratok.

A set parancsnak hozzávetőlegesen 120 változata van. Ezek közül számos nagyon hasonló minden tengelyre például hasonló parancs vonatkozik, amelynek csak egy vagy két kezdőbetűje tér el egymástól néhány parancsot pedig valószínűleg elvétve fogunk használni. Az alábbiakban a set parancsnak csak a legfontosabb változatait tekintjük át. Mindazonáltal fontos megjegyezni, hogy ha az ábra valamely különleges elemét meg szeretnénk változtatni, akkor azt minden bizonnyal a set paranccsal megtehetjük.

3.2.4 Az ábra címe

A set parancs segítségével az ábráknak adhatunk címet. A cím alapesetben az ábrák kerete felett jelenik meg:

 gnuplot>   set title "szinus meresi adatsor"

A címet az unset title parancs segítségével vehetjük le az ábráról.

3.2.5 Tengelyfeliratok

Egy grafikon tengelyein fontos feltüntetni, hogy milyen mennyiségek értékét ábrázoljuk, milyen más mennyiség értékeinek függvényében. Ha az ábra mérési adatokat tartalmaz, akkor a mértékegységeket is szerepeltetni kell.

Az x- és az y-tengelyek feliratait a xlabel és a ylabel (röviden xla és yla) változók beállításával adhatjuk meg. A beállítások után a replot paranccsal ábrázolhatjuk újra az utolsó plot parancsban foglaltakat:

 gnuplot>   set xlabel "ido [sec]" gnuplot>   set yla "kiteres [m]" gnuplot>   replot
3.2.5.1 Jelmagyarázat elhelyezése

Amint azt a 3.2.1.4. szakaszban láttuk, az ábrázolt görbékhez a jelmagyarázatban megjelenő felirat a plot parancs kiadásakor állítható be a title (röviden t) kapcsolóval:

 gnuplot>   plot "sinusadatok.dat" title "inga kitérése" gnuplot>   p "sinusadatok.dat" t "mért adatok", sin(x) t "elméleti görbe"

A jelmagyarázatot a set key paranccsal szabhatjuk testre. A jelmagyarázatot kikapcsolhatjuk a set key off vagy az unset key parancsokkal. A set key parancsnak rengeteg opcionális argumentuma van, ezek közül most csak az elhelyezésre vonatkozókat említjük.

Alapesetben a jelmagyarázat a bal felső sarokban van. Előfordul azonban, hogy ezen a részen az ábra más részei is vannak, ezért a jelmagyarázatot az ábra más részeire kell mozgatni.

A jelmagyarázat lehet az ábrán belül és kívül. Az ábrán belül a left, right, center, illetve top, bottom, center parancsok bármely kombinációját megadhatjuk. Az ábrán kívüli jelmagyarázatot a tmargin, bmargin, lmargin és rmargin, valamint az előző kulcsszavak megfelelő kombinációival adhatunk meg. A

 gnuplot>   set tmargin left

parancs például az ábrá felső margójának bal oldalára helyezi a jelmagyarázatot. A set lmargin left parancs esetén azonban a left kulcsszót figyelmen kívül hagyja a gnuplot, mivel ez nem gyeztethető össze a lmargin kapcsolóval..

3.2.6 Az ábrázolási tartomány

A 3.2.1.5. szakaszban bemutattuk, hogy az ábrázolási tartományokat hogyan állíthatjuk be a plot parancs első opcionális argumentumával. Említettük azt is, hogy ez a beállítás csak az adott plot parancsra vonatkozik, és mindíg felülírja az alapértelmezett beállítást.

Ezzel szemben, a set parancs segítségével magát az alapértelmezett ábrázolási tartományokat változtathatjuk meg. Például a

 gnuplot>   set xrange [100:200]

parancs az x tengelyen a [100,200] intervallumra állítja az alapértelmezett ábrázolási tarományt. A többi tengely beállításához értelemszerűen a set yrange és a set zrange, stb. parancsokat kell használnunk.

Amennyiben szeretnénk visszaállítani az automatikus tartománybeállítást, használjuk set xrange [*:*] vagy a set autoscale parancsokat.

3.2.7 A kész ábra elmentése

A gnuplot többféle terminálon képes az ábrákat megjeleníteni. Amikor a gnuplot ot elindítjuk, az alapértelmezett kimenet a számítógép monitora. Az ennek megfelelő terminál a használt operációs rendszertől függ, Linuxos környezetben a wxt, vagy x11 terminálok használhatók, MS Windows környezetben a wxt wagy windows terminálok, MacOS rendszeren pedig az aqua terminál.

Az éppen kiválasztott terminál típusa a show terminal paranccsal olvasható ki. Természetesen legtöbb esetben nem elégszünk meg azzal, hogy a monitoron vizsgáljuk az elkészült ábrát. A képernyőkimeneten kívül különféle képformátumokat lehet terminálként megadni, például Postscript, JPG, PNG, TIFF, GIF, stb, melyeket elmenthetünk, hogy más program számára is elérhetők legyenek.

A gnuplot ban az elkészült ábrák elmentése egy több lépésből álló folyamat. Ennek során első lépésben át kell állítanunk a megjelenítő terminált a kívánt ábraformátumra. Ezt a set terminal paranccsal tehetjük meg. Ezután a set output paranccsal meg kell adni a kimenetet. Abban az esetben, ha a set output parancs után megadunk egy fájlnevet, akkor minden további plot parancs kimenete a megadott fájlba kerül, ha pedig nem adunk meg fájlnevet, akkor a kimenet a termináltól függően a képernyő vagy a standard kimenet lesz. Végezetül az ábrát a megfelelő plot vagy replot paranccsal újra ki kell rajzolni. Ezáltal az ábra az újonnan megadott terminál típusban, a megadott fájlba íródik ki.

Lássunk erre egy példát, melyben színes png[18] ábrát készítünk a szinusz-függvényről:

 gnuplot>   plot sin(x) w p pt 6 ps 2.5 gnuplot>   set terminal png color gnuplot>   set output "abra.png" gnuplot>   replot gnuplot>   set output gnuplot>   set terminal wxt

Figyeljük meg, hogy a replot parancs kiadása után nem a képernyőn jelenik meg újra az ábra, hanem a parancs hatására a megadott fájlba íródik az ábrát leíró tartalom.

Figyeljünk arra, hogy a set output utasítással le kell zárnunk a kimeneti fájlt, különben a későbbi plot parancsokkal felülírjuk a kész ábrát.[19] Ha szeretnénk újra a képernyőn megjeleníteni az ábrát, vissza kell állítani a célterminált.

A fenti utasítássorozat eredményeként elkészül egy abra.png nevű képfájl a felhasználói területünkön. Megjegyezzük, hogy egyes \LaTeX-sablonok használata esetén a dokumentumokba legkönnyebben eps formátumú ábrát tudunk beilleszteni. Ezt a formátumot a postscript terminál kiválasztásával kaphatjuk meg:

 gnuplot>   set terminal postscript enhanced eps color

vagy tömörebben:

 gnuplot>   set term po enh eps c

3.3 A gnuplot szkriptek használata

Legtöbb gnuplot implementáció a kiadott utasítások sorozatát naplózza. Így az előző fejezetben megismert interaktív használatkor a régebben kiadott parancsok a felfele-gomb segítségével előhozhatók, egyesével újra kiadhatók. Ezen túlmenően lehetőség van a gnuplot teljes pillanatnyi állapotának elmentésére, valamint újbóli betöltésére is.

Mint arról már az előző fejezetben is szót ejtettünk, a megjelenő ábra számos változó (pl. tengely feliratok, betűtípus, színek) pillanatnyi értékétől függ. A save parancs segítségével a elmenthetjük a gnuplot pillanatnyi állapotát:

 gnuplot>   save "abra.plt"

A parancs eredményeként egy abra.plt nevű szöveges állomány keletkezik. Ez az állomány az elmentett állapot összes beállítását tartalmazó set parancsokat, az összes függvényt és globális változót, valamint a legutóbbi plot parancsot tartalmazza. Az így kimentett állapot a load paranccsal tölthető vissza, melynek hatására fájlban felsorolt utasítások rendre lefutnak:

 gnuplot>   load "abra.plt"

A gnuplot parancsokat tartalmazó állományokat mint például a save paranccsal elmentett fájlok gnuplot szkripteknek nevezzük. A gnuplot szkriptjeinket a program indításakor argumentumként is megadhatjuk:

 user@host:$   gnuplot abra.plt

Ekkor a gnuplot szkriptfeldolgozó módban indul el. A gnuplot ilyenkor nem vár interaktív parancsokra, nem ad prompt-ot, hanem lefuttatja az abra.plt tartalmát, majd vissza is kapjuk a parancsértelmező promptját.

Egy ilyen szkriptállományt bármilyen szövegszerkesztővel létre lehet hozni. Például vim mel készítsünk el egy ilyen szkriptet. A vim abra2.plt paranccsal új szöveges állományt nyitunk, melynek legyen a következő a tartalma:

set title "cosinus gorbe"
set xlabel "ido [s]"
plot [0:][-0.5:1] cos(x)
pause -1

A gnuplot állapotát leíró összes változó mindegyikének van alapértelmezett értéke, így ha valamit nem állítunk be, akkor annak az alapértelmezett értéke marad érvényben. Az utolsó sorban a pause -1 parancs segítségével egy <Enter> gomb nyomásáig megállítjuk a gnuplot futását, így az elkészült ábra tetszőleges ideig a képernyőn marad. A pause mouse keypress parancs egy az ábrán történő egérgomb, vagy más billentyű megnyomásáig tarja a képernyőn a grafikont. Próbáljuk is ki, indítsuk el a programot ezzel az új szkripttel:

 user@host:$   gnuplot abra2.plt

A szkript mód segítségével végleges ábrafájlokat is készíthetünk. Módosítsuk a korábbi scriptet a következőképpen, és mentsük el abra3.plt néven:

set title "cosinus gorbe"
set xlabel "ido [s]"
plot [0:][-0.5:1] cos(x)
set term po enh eps col 
set output "sin.eps"

Ezután futtassuk le a szkriptet és győződjünk meg arról, hogy helyesen elkészült a sin.eps állomány.

3.4 Az ábrák beillesztése LaTeXbe

Az előző módon elkészített eps formátumú ábrát a \LaTeX dokumentumokba a figure környezet használatával tudjuk beilleszteni. Ehhez a \LaTeX dokumentum fejlécébe a a 134 usepackage{} paranccsal a graphicx csomagot be kell töltenünk. Ezután a dokumentum törzsében a kívánt helyre beszúrhatjuk az ábránkat a következő módon:

\begin{figure}
 \centerline{
  \includegraphics[width=.8\textwidth, angle=-90]{sin.eps}
 }
 \caption{Ez itt az ábránk ábraaláírása.}
 \label{fig:abra1}
\end{figure}

A fenti példában a következő \LaTeX-parancsokat alkalmaztuk:

  • a 134 begin{} az ún. úsztatott (floating) ábrák létrehozására alkalmas környezetet nyitja meg. Az úsztatott ábrának nincs rögzített helye a dokumentumban, hanem a \LaTeX helyezi el azokat. Az úsztatott ábrák általában a lapok tetejére kerülnek, de ezt a figure környezet opcionális argumentumán keresztül módosíthatjuk.

  • a 134 centerline parancs középre rendezi a zárójelei közé tett objektumot, ami esetünkben éppen az ábra lesz.

  • Az ábrát magát az 134 includegraphics[ók]{ájlnév} parancs segítségével illeszthetjük be a dokumentumba. A bemutatott példában az ábra szélességének megadására a width, az elforgatására a angle opciókat használtuk. A szélességet a szöveg szélességének 0,8-szorosára állítottuk, így automatikusan igazodik a papírmérethez. Az fájlnév helyére az ábrafájl neve, azaz sin.eps került.

  • a 134 caption paranccsal az ábraaláírást tudjuk megadni.

  • a 134 label{ímke} paranccsal egy egyedi azonosítót adhatunk az ábrának. A 134 label paranccsal felcimkézett környezetekre a 134 ref{} paranccsal tudunk hivatkozni, például így:

        A(z) \ref{fig.abra1}.~ábrán látható elméleti modell ...
        

    Fontos, hogy a 134 label parancs a 134 caption parancs után legyen, különben helytelen számozást kapunk a cimkére való hivatkozáskor. A könnyebb áttekinthetőség kedvéért érdemes a cimkéket az adott környezetre jellemző résszel kezdeni, pl. fig:, sec:, stb, de ez nem kötelező.

  • A figure környezetet végül az 134 end{} paranccsal zárjuk be.

3.5 Példák és feladatok

A példákhoz tartozó adatsorok letölthetőek a gyakorlat honlapjáról. A fájlok nevei a feladatok leírásánál szerepelnek. A feladatoknál mindig mutassuk be az elkészítés módját és a végeredményként készült ábrákat is.

3.1. Példa Töltsük le a gyakorlat weboldalától a \emph{sinusadatok.dat} adatsort. A vim szövegszerkesztő segítségével ismerkedjünk meg az adatfájl felépítésével. Készítsünk belőle eps formátumú ábrát, amin az adatfájl első oszlop értékeinek függvényében a második oszlop értékeit ábrázoltuk.

3.2. Példa A sinusadatok.dat adatfájlból készítsünk egy ábrát, amin

  1. az adatsor második oszlopában található értékek függvényében ábrázoljuk az első és a harmadik oszlop adatainak összegét, illetve

  2. ugyanebben az ábrában rajzoljuk ki a 13+4.5*x egyenest is.

Formázásnak adjuk meg a következőket: az adatsorból származó pontok legyenek közepes méretű, kék színű háromszögekkel ábrázolva, míg az egyenes legyen fekete folytonos vonallal. Adjunk neveket az x és y tengelyeknek.

3.3. Példa Az előző feladatban készített ábrát mentsük el PostScript formátumban és illesszük be az egyik múlt órai \LaTeX dokumentumba. Adjunk meg ábraaláírást, hivatkozzunk a szövegben az ábrára!

3.5.1. Feladat Töltsük le a gyakorlat weboldaláról a \emph{sinusadatok.dat} adatsort. A vim szövegszerkesztő segítségével ismerkedjünk meg az adatfájl felépítésével. Készítsünk belőle PostScript formátumú ábrát, amin az adatfájl első oszlopában található értékek függvényében a második oszlop értekeinek négyzetgyökét ábrázoljuk. (Útmutatás: a négyzetgyök kiszámításához használjuk a gnuplot sqrt() függvényét!).

3.5.2. Feladat Az előző adatsort felhasználva készítsünk egy ábrát, amiben az x-tengelyen a ráközelítettünk a [10;20], az y-tengelyen az y0 tartományra. Az eredményből készítsünk PostScript ábrát, amit az evince parancs segítségével mutassunk be a gyakorlatvezetőnek.

3.5.3. Feladat Az előző adatsort felhasználva készítsünk ábrát, amiben az ábrázolási tartományon túl számunkra tetsző színekkel, vonalvastagsággal ábrázoljuk az f(t)=Acos(wt)+c függvényt A=1.5, w=2, c=1 paraméterek mellett, valamint jól látható szimbólumokkal az adatsor első oszlopának függvényében a harmadik és második oszlop különbségét. Az eredményből készítsünk PostScript ábrát.

3.5.4. Feladat Az előző feladatban elkészített ábrát helyezzük el egy \LaTeX dokumentumban (ez lehet valamelyik tex fájl az előző gyakorlatról), adjunk ábrafeliratot az ábrához, valamint helyezzünk el rá hivatkozást a szövegben.

3.5.5. Feladat Készítsünk egy gnuplot szkriptet vim mel, melyben az f(x)=1/x és a g(x)=exp(x) függvényeket ábrázoljuk a (0,3) intervallumon. Az y-tengelyt válasszuk úgy, hogy a két függvény metszéspontja közelítőleg könnyen leolvasható legyen. Adjunk nevet a tengelyeknek, és a kész ábrát mentsük el PNG formátumban!



[17] Lehetőségünk van az adatfájlban egyéb szeparátort is használni, lásd help set datafile separator

[18] Az angol portable network graphics rövidítése

[19] Postscript terminál használatakor a többszöri plot parancsra külön oldalakra készülnek el az ábráink.