Gnuplot howto oldal - Háromdimenziós és animált ábrák
Háromdimenziós megjelenítés
Alapok
Ha a gnuplotnak képletformában akarunk megadni ilyen görbét, akkor
használjuk az x és y változókat, parametrikus módban (set parametric)
pedig u és v változókkal tudunk paraméteres felületeket megadni.
A megjelenítés parancsa az splot.
gnuplot> splot [0:2*pi] [0:2*pi] sin(x)*sin(y)Ennek hatására megjelenik a görbe enyhén ferde koordinátarendszerben. Lehet kétváltozós függvényt is definiálni:
gnuplot> f(x,y)=sin(x)*sin(y)Ezután az f(x,y) függvényt is hajlandó lesz a gnuplot splottolni. Ha a sűrűbb vonalazást szeretnénk:
gnuplot> set isosamples 20,20Alapértelmezésben ugyanis mind x, mind pedig y irányban 10-10 izovonalat húz be. Megjegyezzük, hogy a set samples itt is azt jelenti, hogy az adott x vagy yrange-n belül hágy pontból számítsa a görbét rögzített yra vagy xre. Ezzel tehát ezen izovonalak szépségét állíthatjuk.
gnuplot> set contour bothpéldául berajzol bizonyos szintvonalakat a felületre is, és a koordináta rendszer alapsíkjára is. A set contour base ill a set contour azt csak az alapsíkra rajzol, a set contour surface pedig csak a felületre rajzol. A set nocontour eltünteti a szintvonalakat. Ne felejtsük kiadni a replot utasítást, hogy a beállítások foganatosuljanak a képernyőn is.
gnuplot> set cntrparam {linear | cubicspline | bspline} { points <n>} { order <n> } { levels { auto {<n>} | <n> | discrete <z1> {,<z2>{,<z3>...}} | incremental <kezdő>, <növekmény> {,<végső>} }}Az első opcióhármas annak eldöntésére szolgál, hogy milyen interpolációt használjon a kontúr számolásához. A cubicspline az ismert zfix=f(x,y) pontokat köti össze, a bsline ezeket is csak közelíti, viszonyt simább eredményt ad. A points azt adja meg, hogy az ismert zfix=f(x,y) pontok között hány ponton interpoláljon a cubicspline ill. a bspline. Az order kapcsoló a bspline közelítés rendjét. (lehet: 2-10) Magasabb rend simább görbét eredményez, igaz ezek lényegesen eltérhetnek a lineáris módszerrel kapottól. A következő opciók a szintvonalak zfix szintjeit állítják be. A levels után négy opció követezhet: auto (alapértelmezés), discrete, incremental, vagy egy szám. Fix zfix értékeket a discrete opcióval állíthatunk be vagy incremental segítségével egy egész sorozatot. Maximum harminc diszkrét szintet engedélyez a program.
gnuplot> set nosurfaceparanccsal letilthatjuk a felület megjelenítését. Ezután elmenthetjük a kontúr adatait fileba, és a visszahozhatjuk kétdimenziós ábraként:
gnuplot> set term table gnuplot> set out 'filenév' gnuplot> replot gnuplot> set out gnuplot> set term x11 gnuplot> plot 'filenév'
gnuplot> set hidden3d {defaults} | { {{offsetparancs. Ennek hatására a gnuplot átlátszatlan felületként jeleníti meg az ábrát. Egy felület csak saját maga számára lesz átlátszatlan, de a többi görbe átlátszik majd rajta. Kontúrok nem fognak működni a takart vonalak levétele után. A nyilak, feliratok, jelmagyarázat mindig előtérben lesz. Az offset opció beállítja, hogy a felület alsó fele hány színkóddal legyen eltolva, az azonos színre az offset 0 vagy a noofset használható.} | {nooffset}} {trianglepattern } {{undefined } | {noundefined}} {{no}altdiagonal} {{no}bentover} }
A fortran programozók figyelmét felhívjuk, hogy a binárisan kiírt fileok legelejére és legvégére a fortran ki szokott írni egy-egy a file hosszát tartalmazó 4byteos integert, ami a nem-fortran programokat lehet, hogy zavarja. A manapság keringő gnuplotokat C-ben írták. Ez utóbbiról pl. úgy lehet meggyőződni, hogy kiadjuk a... ... ...
gnuplot> show locale locale is "C"parancsot, melyre mutatja az ő nyelvi környezetét.
gnuplot> splot "adat.szegmensek" gnuplot> splot "adat.matrix" matrix gnuplot> splot "adat.binary" binary gnuplot> splot "adat.gorbe" u 1:4:(sin($2)) with lineA with line opció alapértelmezett az első három esetben, a negyedikben pontokat rakna magától. Az első három esetben hálót rajzol fel.
gnuplot> set dgrid3d {utasítást használjuk. Itt beírhatjuk, hogy hányszor hányas mátrixot készítsen. Először kiszámításra kerül az , hogy mekkora a legnagyobb és legkisebb x és y érték. Aztán definiál rácspontokat a paraméterek szerint. A rácspontokhoz tartozó értékeket pedig úgy számolja ki, hogy veszi a file pontjait, és megnézi az adott rácsponttól való távolságát. Ennek a távolságnak a reciprokával súlyozott átlagát veszi a pontoknak, és az így kapott értéket írja a rácspontra. Ezek után a rácspontokra írt értékeket rajzolja fel, a tengelyeket pedig felcimkézi. A normával az adható meg, hogy hányas normában számolja a távolságot (gyk. euklideszi a kettes). Alapértelmezésben 10x10es rácsot definiál euklideszi normával. Megjegyzés: ha csak két oszlopunk van, akkor a}{,{ } {, }}
gnuplot> set dgrid3d gnuplot> splot "lejto.dat" u 1:2:2parancsokkal kirajzolhatjuk a háromdimenziós sípályát.
set view <rot_x> {,{<rot_z>}{,{<scale>}{,<scale_z>}}} show viewszintaxisú parancs. rot_x, rot_z szöggel elfordul az ábra egy virtuális x és z tengely körül. A virtuális x tengely a gnuplot ablak vízszintes széle az x tengely, a függőleges széle az y tengely, a képernyőre merőleges a z tengely. Előszőr az x tengely körüli hajtódik végre, majd a z tengely körüli, de ez utóbbi már a transzformált z tengely körül, azaz a grafikon z tengelye körül. ( I hate SO(3)! ) A szögeket fokokban kell megadni, alapért: rot_x=60, rot_z=30. A scale az egész grafikont skálázza, a scale_z csak a z tengelyt. Ezek tört számok, 1.0 az alapértelmezés.
Borsányi Szabolcs fizikus