Gnuplot

Jegyzetben az 3. fejezet (36-től 52. oldalig). http://stegerjozsef.web.elte.hu/teaching/szamalap.pdf

A gnuplot egy sokoldalú parancssorvezérelt két- és háromdimenziós függvényrajzoló program. Az összes nagyobb számítógépen és operációs rendszer alatt használható. A kimenetet a képernyőre is valamint rengetegféle képformátumban (EPS, PNG) képes kiadni.

Forrás: Wikipédia

Egyszerű ábrák készítése

A plot parancs kiadásával lehetséges különböző objektumok 2 dimenziós megjlenítése.

Használata:

plot sin(x)
help plot # Bővebben a plot parancsról

Megjegyzés: A Gnuplot rendelkezik előre definiált függvényekkel, mint a sin(x), cos(x), tan(x), erf(x), atan(x), exp(x) stb.

Saját függvények definiálása

Könnyen megadhatunk függvényeket is. Arra kell csak figyelni, hogy jól meg lehessen különböztetni a függvény változóját a konstansoktól.

Példa

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

Figyelem! A megadott függvényben a változó t, de mégis f(x)-t ábrázolunk.

Adatok beolvasása

A plot parancsnak megadhatóak adatfájlok, melyeket szeretnénk ábrázoni.

plot "./sinusadatok.dat"

Gnuplotban lehetőség van 'bash' parancsok kiadásáara a ! segítségével

Példa:

!ls -l

Parancsok rövidítése

A gnuplot-ban lehetőség van a parancsok rövidítésére, példaként a plot parancsot egyszerűen p-vel lehet helyettesíteni:

p "sinusadatok.dat"

Az előzőleg ábrázolt objektumot a replot parancs ismételten megjeleníti:

replot

Adott oszlop ábrázolás

Alapértelmezetten az 1-2. oszlopot ábrázolja a Gnuplot. (A másodikat az első függvényében.)

A using kapcsoló használatával lehetőség van megadni az ábrázolni kívánt oszlopokat (X-Y sorrendben).

plot "sinusadatok.dat" using 3:2

Oszlopadatok módosítása

Lehetőség van egy adott oszlop adatait módosítani is, például a számszorosukat venni. (Tipikus feladat mértékegység átváltásnál.) Ekkor az adott oszlopot () közé kell rakni, és az oszlopra a \$i néven hivatkozni, ahol i az oszlop száma.

plot "sinusadatok.dat" using ($1):(2*$3)
            VAGY
plot "sinusadatok.dat" using 1:(2*$3)

Rövidítéseket használva!

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

Több ábra kirajzolása

Egy ábrára több adatot is fel lehet rajzolni, ha egymás után több objektumot megadunk a plot parancsnak vesszőkkel elválasztva.

p f(x), cos(x), "sinusadatok.dat" u 1:3, erf(x)

Ha közös adatfájlt használva nem kell kiírni újra a fájl elérését, elég csak "" (kettő idézőjel).

p "sinusadatok.dat" u 2:($2*$3), "" u (0.7*$2):($2), sin(x)

Jelmagyarázat

A plot parancsban a title kapcsolóval tudunk nevet adni az adatsornak. Ne keverjük össze a kép címével, ez az adatsornak a jelmagyarázata.

plot "sinusadatok.dat" using 1:3 title "adatok"

Rövidítésekkel:

p "sinusadatok.dat" u 1:3 t "adatok"
p sin(x) t "" - üres a jelmagyarázat

Megj.: A notitle kapcsoló kikapcsolja a jelmagyarázatot.

p "sinusadatok.dat" u 1:3 notitle - nincs jelmagyarázat

Adott tartomány ábrázolása

A megjeleníteni kívánt adatokat [] közé megadott tartománnyal jelöljük ki plot parancs után. Ilyenkor meg kell adni a határokat az összes tengelyre vonatkoztatva, azaz nem lehet csak x vagy y tengelyre megadni Kivétel: set xrange (yrange, zrange) parancs használata, de ez később.

plot [-100:100][-5:5] sin(x) - fix értékű határ
plot [10:*][] "sinusadatok.dat" - automatikusan beállított
plot [10:][] "sinusadatok.dat" - alapértelmezett határ

Vonalstílusok

Lehetőség van különböző vonalstílusok közül választani:

  • Klasszikus vonal: lines (l)
  • Pontok: points (p)
  • Vonal és pontok: linespoints (lp)
  • Pöttyök: dots (d)
  • Tüskék: impulses (i)
  • Hibasávok: errorbars (e)

Példa

plot sin(x) with points
        VAGY
p sin(x) w p

A test parancs megmutatja a gnuplot lehetséges színeit, vonaltípusait ...

test

Egyéb utasítások

  • Vonal színe: linecolor (lc) - 0-7 közötti számok
  • Szaggatottság: linetype (lt)
  • Vonalvastagság: linewidth (lw)
  • Pontok stílusa: pointtype (pt)
  • Pontok mérete: pointsize (ps) - dots mindig ~nulla méretű

Példa

plot sin(x) lc 5 lt 0.5 lw 10

"set" parancs

Több mint 150 dolgot lehet vele beállítani:

  • set title "..." - Ábra címe megjelenjen az adott szöveggel
  • set xlabel "..." - x tengely felirata (ylabel, zlabel)
  • set key - Legyen jelmagyarázat (Alapesetben van)
  • set xrange [?:?] - x tengely tartománya (yrange, zrange)
  • unset ... - "set parancs inverze" pl: unset title, unset key

Jelmagyarázat elhelyezkedése:

1. Ábrán belül: 
    1.1. Függőlegesen: top/center/bottom
    1.2. Vízszintesen: left/center/right
2. Ábrán kivűl: tmargin/bmargin/lmargin/rmargin

Megjegyzés: set key inside parancsot kell használni, ha kitettük, de ismét belülre akarjuk rakni.

Példa

set key lmargin

Ábra mentése

Támogatott formátumok:

PS, JPG (JPEG), PNG, TIFF, GIF ...

PNG kimentése

set terminal png color
set output "sin.png"
replot
set output
set term x11

PostScript (PS) kimentése:

set term po enh eps c
set out "sin.eps"
replot
set out
set term x11

Rövidítések (használhatóak a teljes kifejezések is):

term: terminal            po: postscript
enh: enhanced             eps: eps formátum
c: color

Scriptek mentése/betöltése

Lehetőség van a kiadott utasítások mentésére, illetve előre megírt parancsfájlok betöltése is.

  • Mentés: save "akarmi.plt"
  • Betöltés: load "akarmi.plt"
  • Illetve terminálból közvetlenül (külön gnuplot indítása nélkül): gnuplot akarmi.plt
  • Kilépés a gnuplotból: exit vagy quit vagy <CRTL+d>

Ábrák illesztése latex-be

Ábrák használatához szükséges a graphicx csomag betöltése a latex-be. Az ábrákat a \includegrpahics[]{} paranccsal lehet betölteni. Viszont érdemes az ábrákat a figure környezet segítségével beemelni a dokumentunkba, mivel ekkor lehetség van cimke (label-ref) és képmagyarázat (képaláírás) elhelyezésére.

A PS/EPS formátumú ábrát alapértelmezetten csakis a latex parancs támogatja, a pdflatex használatához a pdftoeps csomag betöltése szükséges, ami pdf-re konvertálja a képeket.

Az includegraphics kapcsolói:

  • scale=1 illetve width=10cm és height=2 - Képméret ahol 100% az 1-nek felel meg, illetve adott szélesség/magasság megadás
  • \linewitdh, \textwidth, \columnwidth - Relatív méretek a vonal/szöveg/oszlop-széllességhez képest.
  • keepaspectratio (true/false) - Megtartsuk-e a kép méretarányát
  • trim (trim=l b r t) - Kép benfoglaló dobozának mozgatása
  • clip (true/false) - Kép vágása a benfoglaló dobozra
\includegraphics[width=0.5 height=20cm \linewidth 
                 trim= 10 0 0 100 clip]{sin.png}

Példa a "figure" környezetről

\begin{figure}
    \centering   %Középre rendezi a képet
    \includegraphics[]{./fig/sin.png}
    \caption{Szinusz görbe}
    \label{fig:sin}
\end{figure}