Gnuplot howto oldal - Scriptek
Script írása
Tetszőleges szerkesztővel írhatunk scriptet, álljon itt egy egyszerű
példa (rajzol.plt)
p [0:2*pi] sin(x) w l lt -1 lw 2 pause -1 "Nyomj entert!"A pause -1 utasítás kiír egy üzenetet majd vár enterre, erről majd később.
neumann ~ > gnuplot rajzol.pltmódon futtatni a scriptet, ekkor megjelenik a fekete szinuszgörbe, vár egy entert, majd kilép egészen. A shell egyik jó tulajdonsága, hogy ha futtatási jogot adunk a .plt fileunknak,
neumann ~ > chmod +ox rajzol.pltés beszúrjuk az első sornak, hogy
#!/usr/bin/gnuplotakkor egyszerűen a shellből indítva is lefut, hiszen a shell kitalálja az első sorból, hogy milyen programot kell meghívni. Ehhez persze az kell, hogy a gnuplot program tényleg ott is legyen. Erről a which gnuplot paranccsal győződhetünk meg. Harmadik módja a futtatásnak a load parancs:
gnuplot> load "rajzol.plt"szintén lefut a script, de utána nem lép ki egészen, hanem visszakapjuk a gnuplot promptot. Egyik fontos alkalmazása a loadnak, hogy a save (lásd lejjebb) paranccsal elmentett parancssorozatot reprodukálja. A script tartalmazhat loadot, egymásba ágyazni lehet. A negyedik módja a futtatásnak lehetőséget biztosít az argumentumátadásra is:
gnuplot> call "argumentumos.plt" "vacak" 1 3 -1ahol az argumentumos.plt pl. a következő sorból áll:
plot $0 using $1:$2 w l lt $3Az eredeti dollárjelet $$ kombinációval kelthetjük életre.
gnuplot> save "rajzom.plt"Ennek loaddal való meghívása visszavarázsolja a grafikont. Elmentésre kerülnek ugyanis a felhasználói függvények, változók, beállítások és az utolsó plot vagy splot parancs. Ha csak az egyik típusú adatot akarjuk menteni:
gnuplot> save var "valtozok.dat" gnuplot> save functions "fv.dat" gnuplot> save set "beallitasok.dat"A kimentett script nem csak az általunk adott beállításokat, hanem minden egyéb beállítás alapértelmezését is tartalmazza.
gnuplot> pause szam "szoveg"A szöveg elhagyható. Ha a szám nulla, nincs várakozás, ha -1, akkor enterig vár.
gnuplot if (logikai_kif) parancs1; parancs2; parancs3A logikai_kif helyére logikai műveletek eredménye kerülhet, pl. a!=b. Tetszőleges számú parancsot írhatunk pontosvesszővel elválasztva, ezeket mind feltételesen hajtja végre. A jelen verzióban nincs else, de még goto sincs.
a=a+0.2 plot x**a if (hatar>a) rereadA másik a ciklusmag környezete:
a=0 hatar=10 set xrange [0:1] set multiplot call 'ciklusmag.plt' set nomultiplotA set multiplot és nomultiplot arra való, hogy a külön plot parancsokkal kirajzolt ábrák egy képen jelenjenek meg egymásrarajzolva. A kirajzolás akkor történik meg, amikor a set nomultiplothoz ér a script. Azért kellett két script, mert az, amelyikben a reread van, minden ciklusban lefut, ezért ott a kezdeti ciklusváltozóértéket nem lehet rögzíteni. De legyünk ravaszak, és emlékezzünk, hogy van egy pi nevű előredefiniált változónk. A következő script ugyanaszt teszi, mint az előző scriptpár.
if(pi<3.141928) set multiplot; set xrange [0:1] pi=pi+0.2 a=pi-3.1415927 plot x**a if(a<2) reread set nomultiplot pause -1 pi=2*asin(1)
Borsányi Szabolcs fizikus