GNU Octave/Tworzenie rysunków

Z Wikibooks, biblioteki wolnych podręczników.

Spis treści

[edytuj] Tworzenie rysunków

[edytuj] Rysunki 2D

Rysunki dwuwymiarowe można tworzyć za pomocą funkcji plot. Najczęstsze użycie to:

plot(x, y)

Oba argumenty są wektorami tej samej długości i zawierają współrzędnych odpowiednio x-owe i y-owe.

Wykres funkcji sinus. Rysowanie domyślne.

Zatem plot dostaje ciąg punktów: Pi = (xi,yi) i rysuje linie: P1P2,...,Pn − 1Pn. Na przykład:

x=[0:1:10]
y=sin(x)
plot(x,y)

Dostajemy przybliżenie wykresu funkcji sinus.

Drugi wykres funkcji sinus.

Punkty domyślnie zostały połączone liniami i narysowane na czerwono. To można zmienić, np.

plot(x,y,"+b")

zaznaczy punkty znakami \times i narysuje je na niebiesko. Żeby lepiej było widać chcemy też wyświetlić kratę punktów:

grid on

Dostępne kolory i ich oznaczenia:

oznaczenie literowe oznaczenie numeryczne nazwa koloru
k 0 black
r 1 red (domyślny)
g 2 green
b 3 blue
m 4 magenta
c 5 cyan
w 6 brown

Dostepne style to:

+ * o x - . @ -@ 
Wykres funkcji trygonometrycznych. Cztery wykresy na jednym. Każdy innym kolorem i umieszczony w legendzie. Okno ograniczone do [0,10] \times [-\!2,2].

Wykresy można łączyć. Każdy z nich wówczas dobrze jest narysować innym kolorem i opisać w legendzie. Opis umieszcza się między dwoma średnikami, na przykład:

 t = [0:0.1:10];
 plot(
   t,cos(t),"-r;cos(t);",
   t,sin(t),"+m;sin(t);",
   t,tan(t),"xc;tan(t);",
   t,atan(t),"*g;argtan(t);" );

W tym wykresie funkcja tangens eksplotuje, więc przyda się jeszcze ograniczyć zakres osi:

 axis( [0 10 -2 2] )

[edytuj] Rysunki 3D

Domek narysowany za pomocą mesh.

Narysować domek za pomocą funkcji mesh.

mesh(x,y,z)

rysuje wykres dla punktów (xi,yj,zi,j). Zatem domek o kwadratowej podstawie [0,1]2, wysokości 1 i o dachu wysokości 1 można narysować za pomocą komendy:

mesh([0 0.5 1], [0  1], [1 2 1; 1 2 1 ])
Wykres funkcji sin(x2 + 2y2).

Narysować za pomocą za pomocą funkcji mesh i meshgrid wykres funkcji

f: [-1,1]^2 \to \mathbb{R}
f(x,y)=sin(x^2+2y^2)\,

Przygotujmy brzegi:

x=[-1:0.1:1];
y=[-1:0.1:1];

Obliczamy wartości:

[X,Y]=meshgrid(x,y);
Z=sin(X.*X.+2.*Y.*Y)

Rysujemy:

mesh(x,y,Z)

[edytuj] Zapis do pliku

Sposób zapisu do pliku zależy od wersji GNU Octave.

Jeśli rysujemy za pomocą Gnuplota, można to zrobić "niskopoziomowo" za pomocą __gnuplot_raw__:

__gnuplot_raw__("set term png \n");
__gnuplot_raw__("set output \"plik.png\" \n");
plot(...)

Wynikiem będzie "plik.png" w formacie PNG.

Inna metoda, już odradzana, to użycie funkcji gset

gset term postscript eps color
gset output "plik.eps"
plot(...)

[edytuj] Zaawansowany gnuplot

Z poziomu Octave'a można użyć zaawansowanych opcji Gnuplota. Wykonując

__gnuplot_raw__("polecenie\n");

to tak, jakbyśmy wykonywali polecenie w samym gnuplocie. Na przykład:

__gnuplot_raw__("set key off\n")