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,20
Alapé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.

Triviális általánosítás

Itt is működnek a tengelyekkel kapcsolatos beállítások (set label, set zrange, set xtics, stb) . A harmadik (függvényérték) tengely neve z.

Szintvonalak berajzolása

A szintvonalakat itt kontúrnak hívják. A set contour paranccsal állítható:
gnuplot> set contour both
pé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.

Szintvonalbeállítás

Alapértelmezésben a kontúrokat lineáris szakaszokból rakja össze. A szintvonalak értékét pedig a z képhalmazt osztja 5 részre, és ezen 5 metszethez tartozó szintvonalakat rajzolja be. Ennek átállítására a következő parancs alkalmas:
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.

A felület elhagyása, maradjon csak a szintvonal

Ha csak a kontúrra vagyunk kíváncsiak, akkor
gnuplot> set nosurface
paranccsal 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'

Takart vonalak levétele

A takart pontok háromdimenziós rajzot könnyen elcsúfítják, gyakran érdemes levenni, erre szolgál a
gnuplot> set hidden3d {defaults} |
                    { {{offset } | {nooffset}}
                      {trianglepattern }
                      {{undefined } | {noundefined}}
                      {{no}altdiagonal}
                      {{no}bentover} }
parancs. 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ó.

Ábra adatfileból

Milyen legyen a formátum?

A gnuplot alapvetően három formátumot ismer: A megjelenítés a következőképpen történik:
gnuplot> splot "adat.szegmensek"
gnuplot> splot "adat.matrix" matrix
gnuplot> splot "adat.binary" binary
gnuplot> splot "adat.gorbe" u 1:4:(sin($2)) with line
A 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.

Számhármasból felület

Tegyük fel, hogy van három számoszlopunk egy fileban, ekkor a
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:2
parancsokkal kirajzolhatjuk a háromdimenziós sípályát.

A háromdimenziós grafikon nézete, forgatása

A háromdimenziós ábra kétdimenziós képernyőre vagy papírlapra való levetítését szabályozza a
       set view <rot_x> {,{<rot_z>}{,{<scale>}{,<scale_z>}}}
       show view
szintaxisú 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