GnuPlot – podstawy

img1.png

GnuPlot


Gnuplot jest narzędziem do kreślenia wykresów 2D i 3D, sterowanym z wiersza poleceń. Ta jego cecha, oraz możliwość pobierania zewnętrznych danych, umożliwia jego wykorzystanie do wizualizacji wyników z innych programów. Możliwe są dwa tryby pracy:

  • Jezeli uruchomimy program bez podania zadnych parametrow (polecenie gnuplot), bedzie on pracowal w trybie interaktywnym (bedzie oczekiwal na komendy uzytkownika i kolejno je wykonywal). Aby zakonczyc prace, nalezy wpisac komende exit, quit lub q.
  • Jezeli podamy parametr (polecenie gnuplot plik), program wykona polecenia zawarte w pliku i zakonczy prace (tryb wsadowy)


Zmienne i funkcje

W przypadku wykresow dwuwymiarowych zmianna niezalezna jest x (lub t w trybach: parametrycznym i biegunowym). Dla wykresow trojwymiarowych zmiennymi niezaleznymi sa odpowiednio x i y (lub u i v w trybie parametrycznym). Nazwy zmiennych niezaleznych mozna przypisywac poleceniem set dummy.

Funkcje definiujemy w sposob podobny jak w jezykach programowania,
np.
f(x) = x**2 + 2*x + 1
oznacza funkcje f(x) = x2 + 2x + 1,
zas
g(x) = (x<0) ? -x**2 : x**2
oznacza funkcje g(x) = {-x2 dla x<0 i x2 dla x>=0}.

Podstawowe operatory i funkcje matematyczne, ktore oferuje GnuPlot, to:

a+b       suma a i ba-b       roznica a i b

a*b       iloczyn a i b

a/b       iloraz a i b

a**b	  podniesienie a do potegi b

sqrt(a)	  pierwiastek kwadratowy z a

exp(a)	  podniesienie liczby e=2,71828 do potegi a

log(a)	  logarytm naturalny (o podstawie e) z a

log10(a)  logarytm dziesietny z a

abs(a)	  wartosc bezwzgledna z a

sgn(a)	  signum (=1 dla a>0, =-1 dla a<0, =0 dla a=0)

real(a)	  czesc rzeczywista liczby zespolonej

imag(a)	  czesc urojona liczby zespolonej

sin(a)    funkcje trygonometryczne

cos(a)

tan(a)

asin(a)   funkcje cyklometryczne (arcus sinus, ...)

acos(a)

atan(a)

sinh(a)   funkcje hiperboliczne

cosh(a)

tanh(a)

a && b    logiczne AND

a || b    logiczne OR

Nalezy pamietac, ze operacje na zmiennych zdefiniowanych jako calkowite moga dac inne rezultaty, niz w przypadku zmiennych rzeczymistych.
np.
1.0 / 4.0 = 0.25
1 / 4 = 0


Wykresy 2D

img2.png

Do kreslenia wykresow 2D sluzy polecenie plot. Jego skladnia jest nastepujaca:

plot [przedzial zmiennej] funkcja1, funkcja2, … title “nazwa”

np. polecenie:
plot [0:10] x**2-2*x , 5*sin(x)
spowoduje wykreslenie wykresow dwoch funkcji dla x zmieniajacego sie w przedziale <0,10>.
zaś:
plot x*sin(x+2) title “Funkcja”
spowoduje wykreslenie w domyslnym przedziale wykresu i nadanie mu nazwy “Funkcja”.Dwuwymiarowe wykresy mozna kreslic takze w biegunowym ukladzie wspolrzednych. Sluzy do tego polecenie set polar. Zmienna niezalezna (t) jest wtedy kat w radianach, a zmienna zalezna – promien. Do zmiany jednostek katowych stosuje sie polecenia: set angles degrees (stopnie) i set angles radians (radiany).
W celu przywrocenia kartezjanskiego ukladu wspolrzednych stosujemy komende set nopolar.


Wykresy 3D

img3.png

Do kreslenia wykresow 3D sluzy polecenie splot. Jego skladnia jest nastepujaca:splot [przedzial 1] [przedzial 2] funkcja1, funkcja2, … title “nazwa”np. polecenie
splot [-10:10] [-10:10] x**2*y
powoduje wykreslenie wykresu funkcji dla x i y zmieniajacych sie w przedziale <-10,10>

Do obracania wykresu 3D sluzy komenda set view kat_x, kat_z


Wykresy parametryczne

img4.png

W wykresach parametrycznych zmienne x,y uzalezniamy od parametru t ( dla 3D – odpowiednio x,y,z zaleza od u i v). Do wlaczenia trybu parametrycznego sluzy polecenie set parametric.Przykladem wykresow parametrycznych jest obrazek obok, wygenerowany przez skrypt:

#! /usr/bin/gnuplotset parametric;
set polar; set samples 200;
set grid polar
set size 1,1; set origin 0.1,0.1;
set multiplot
set size 0.5,0.5; set origin 0.0,0.0;
plot sin(2*pi*cos(t)), exp(t)-t
set size 0.5,0.5; set origin 0.5,0.0;
plot sin(2*pi*sin(t)), exp(t)+t
set size 1.0,0.5; set origin 0.0,0.5;
plot t, sin(t)*t
set nomultiplot
pause -1 "Press ENTER to continue"

Konfiguracja wykresow

Wiecej o przedzialach

Jezeli dla danej zmiennej nie zostanie okreslony przedzial, zostaje przyjeta jego poprzednia wartosc (poczatkowo <-10,10>). Przedzial zmiennej zaleznej jest okreslany automatycznie.
Jesli chcemy, bez okreslania przedzialu dla zmiennej x, okreslic przedzial dla zmiennej y, ten pierwszy zapisujemy: [ ].
Przedzialy dla zmiennych mozna tez okreslac za pomoca polecen:
set xrange, set yrange i set zrange
np.
set xrange [-0.5:1.0] .
W ten sposob zdefiniowane przedzialy obowiazuja we wszystkich nastepnych wykresach nie posiadajacych wlasnej definicji przedzialu. Jezeli chcemy przywrocic automatyczne ustalanie przedzialow, wywolujemy polecenie
set autoscale [zmienna]

Inne przydatne polecenia

set xlabel “nazwa”, set ylabel “nazwa” i set zlabel “nazwa”
set title “nazwa”
set grid
set samples
set isosamples
set nokey

plot … with boxes
set boxwidth

set hidden3d
set contour
set nosurface
set cntrparam


Dane zewnetrzne

Dane w postaci wspolrzednych kolejnych punktow mozemy odczytac z pliku zewnetrznego. Nazwe pliku podajemy w cudzyslowie, jak w przykladzie ponizej:
plot ‘plik_z_danymi’
Przykladowy plik zawierajacy dane przedstawiono po prawej.Aby na wykresie kolejne punkty polaczone byly liniami, stosujemy polecenie set data style, np.
set data style linesAby zastosowac wygladzanie, dodajemy polecenie smooth, np.
plot ‘plik_z_danymi’ smooth bezier
30      10
10      20
20      40
30      90
30      100
45      120
55      110
70      100
100     100

Zapis wynikow

Aby zapisac uzyskany wykres nalezy zmienic typ wyjscia (polecenie set terminal), oraz okreslic plik wyjsciowy (polecenie set output).
Skladnia i mozliwe opcje obu polecen sa nastepujace:

set terminal typ
X11 – ekran
postscript – plik postskryptowy (ps)
png [small medium large] [monochrome gray color] – obraz png
dxf – plik dxf (AutoCAD)
table – wynikiem jest tablica zawierajaca wspolrzedne punktow wykresu
set output “nazwa_pliku”
jesli pominiemy nazwe, wyjscie zostanie przekierowane na STDOUT (ekran)

Do podgladu aktualnych ustawien sluza polecenia show terminal i show output


Skrypty i tryb wsadowy

Podobnie jak w przypadku skryptow shell’a, dodanie linijki ze sciezka dostepu do gnuplota:
#!/usr/bin/gnuplot,
oraz zmiana atrybutow pliku na wykonywalny powoduje, ze do uruchomienia takiego skryptu nie trzeba wpisywac polecenia gnuplot.

Po wykonaniu polecen zapisanych w skrypcie okienko z wykresem natychmiast sie zamknie. Aby tego uniknac, stosujemy instrukcje pause. Jako parametr przyjmuje ona czas, jaki ma uplynac od wykonania zadania do zamkniecia okienka. Jesli podamy -1, program bedzie oczekiwal na nacisniecie klawisza ENTER przez uzytkownika
np.
pause -1 “Press ENTER to continue”

Podczas pisania skryptow do gnuplota przydatne moga okazac sie znaki:
# – komentarz
; – koniec polecenia
\ – kontynuacja linii


Dalsze zrodla informacji

Dalsze, bardziej szczegolowe informacje na temat programu GnuPlot mozna uzyskac, korzystajac z interaktywnej pomocy tego programu (polecenie help albo ?). Informacje na temat danego polecenia uzyskac mozna wpisujac help nazwa_polecenia.