5. GRAFIKA DWUWYMIAROWA – funkcja PLOT
Wykaz znaków (markerów), kolorów i stylów linii używanych przez funkcję plot
'marker' 'color' 'linestyle'
. point v triangle (down) y yellow - solid
o circle ^ triangle (up) m magenta : dotted
x x-mark < triangle (left) c cyan -. dashdot
+ plus > triangle (right) r red -- dashed
* star p pentagram g green none bez linii
s square h hexagram b blue
d diamond w white
k black
Tablica wartości RGB danych jako trójki
[0 0 0 ] black [1 0.62 0.60 ] róż chinski
[1 1 1 ] white [1 0.92 0.90 ] blady róż
[1 0 0 ] red [0.5 0.5 0.0 ] olive
[0 1 0 ] green [0 0.5 0.0 ] oliwkowy
[0 0 1 ] blue [.49 1 .83 ] aquamarine (morski)
[0.4 0.5 1 ] light blue [.80 1 .80 ] zielonkawy
[1 1 0 ] yellow [0 0.5 0.2 ] dark green
[1 0 1 ] magenta [0.5 0.1 0.9 ] violet
[0 1 1 ] cyan [0.25 0.88 0.82] turqoise
[.5 .5 .5] gray [1 0.75 0.80 ] pink
[.7 0 0 ] dark red [0.5 0 0.5 ] purple
[1 .62 .40] copper [0.86 0.08 0.24 ] crimson
[1 .62 .30] zloty [1 0.65 0 ] orange
Wykres rozproszenia punktów {xi, y i}, i=1, ..., n
(ang. scatterplot) jest rysowany za pomocą funkcji:
h=plot(x,y,s) -- gdzie
wektory x i y są wektorami kolumnowymi o n składowych i zawierają kolejne wartości {xi} i {yi} i=1, ...,n,
s jest łancuchem zawierającym trójkę znaków określających
symbol (marker) i kolor wykreślanych punktów, oraz to czy wykreślane punkty mają być połaczone linią (patrz tabelka najczęściej stosowanych oznaczeń powyźej oraz przykłady uźycia poniżej ),
h jest tzw. rączką (ang. handle) do obiektu, który stanowi wykreślony rysunek. Aby dowiedzieć się o własnościach obiektu, pytamy się np.
(z okna komned): g=get(h); i oglądamy co zawiera zmienna g;
są tam nazwy i aktualne ustawienia poszczególnych własności obiektu h.
Jeśli nie zadeklarujemy parametrów s,x,h, to Matlab przyjmuje ich domyślne wartości.
Przykłady - dla danych wektorów kolumnowych x i y o tej samej
długości, zawierających wartości {xi} i {yi} odpowiednio:
plot(x,y) &ndash zostaną wyrysowane linie lączące (niewidoczne) punkty o wartościach {xi} i {yi} . Punkty sa łączone
w takiej kolejności, jak wystepują w wektorach x i y.
plot(x,y,'*r') rysuje czerwone gwiazdki niepołączone
żadną linią.
plot(x,y,'color',[0,0.2,0.8],'marker','.'); rysuje kropki specjalnym
kolorem, też niepołączone.
Możemy również zmieniać wielkości markerów i grubości linii, np. jak niżej:
plot(x,y,'color',[0,0.2,0.8],'marker','.', 'markersize', 16, 'linewidth', 3);
Uwaga: trzeba deklarować x i y jako oddzielne
wektory. Jesli poda się tylko jeden argument (np. wektor y o wymiarach n x 1),
to Matlab przyjmuje jako domyślny argument x kolejne numery
elementów wektora y, czyli wektor liczb całkowitych ii=[ 1,2, ... , n]' jako
zmienną x, i wykresla wykres tak, jak gdybyśmy napisali: plot(ii,y) .
Napisanie rozkazu plot(Y), gdzie Y jest macierzą rozmiaru (nxK) spowoduje,
że tablica Y zostanie rozszczepiona na K kolumn: Y=[y1, ..., yk, ... yK].
i dla każdej kolumny yk zostanie wykonany – na tym samym
rysunku – wykres pary (ii, yk).
Do opisu rysunku służą funkcje:
title('s'), xlabel('sx'), ylabel('sy') – tytuł, opis osi 'x', opis osi 'y'
oraz legend('s1', 's2','s3') – legenda
do wykreślonych punktów lub krzywych.
Zmiana podziałki i opisu osi 'x' (funkcja gca znajduje aktualny układ osi). Poniższe instrukcje powoduja, że aktualny opis osi 'x' będzie zawierał tylko trzy wartości: -1, 0, i 1, którym będą przypisane etykiety A, B, C.
set(gca, 'xtick', [-1, 0, 1]); – daje tickmarki w tych 3 miejscach
set(gca, 'xticklabel', [-1, 0, 1], {'A', 'B', 'C"}); – tak będa opisane te trzy miejsca.
KOMPONOWANIE OKIEN GRAFICZNYCH – funkcje 'figure',
'subplot', 'gtext', 'text'
Funkcja figure powoduje otwarcie nowego (pustego) okna graficznego.
Np. funkcja figure(3) otwiera (czyni aktywnym) okno o numerze 3. Rezultat wykonania tej instrukcji może być dwojaki:
- Jeśli okno o numerze 3 nie istnieje, to zostaje otworzone
puste okno o tej nazwie; wydana następnie instrukcja 'plot' będzie wykonana w tym właśnie oknie.
- Jeśli okno o numerze 3 już istnieje, to zostaje ono umieszczone
na górze stosu okien i staje sie oknem 'aktualnym'. Nowo wydana instrukcja
'plot' wymaże treść tego okna i wrysuje na jej miejsce nową treść
wynikającą z wykonywanej instrukcji.
Do przytrzymania (zatrzymania) starej treści okna i dorysowania do niej
nowych elementow służy instrukcja hold on.
Uwaga, w przypadku większej liczby otwartych okien należy zwrócić uwagę,
do którego okna był wydany rozkaz hold on.
Odwołanie instrukcji 'hold on' do danego okna następuje przez hold off.
Funkcja subplot pozwala komponować okna jako tablice o w
wierszach i k kolumnach. Nagłówek funcji:
subplot(w,k,h) gdzie w,k określają generalnie rozmiar tablicy, natomiast liczba h (1<= h <= w*k) określa miejsce okna (pozycje)
w tablicy. Liczba 'h' numeruje okna liniowo wierszami, od lewej do prawej,
tj. najpierw
jest wypełniany pierwszy wiersz tablicy (miejsca: 1, 2, ..., k),
potem drugi wiersz tablicy (miejsca: k+1,..., k+k), itp.
Funkcja gtext nanosi w miejsce zaznaczone myszą tekst dany
jako 'string'.
Przykład wywolania: gtext('Bolek')
Funkcja text umieszcza w miejscu określonym pierwszymi dwoma parametrami
zadany tekst-łancuch (string). Np. text(2,5,'Bolek')
Zarówno w przypadku użycia funkcji 'gtext' jak i 'text' można justować położenie
napisu względem zadeklarowanego punktu położenia
(alignement) – patrz help
Zamiana zmiennych numerycznych na napisy (strings)
s1= int2str(j) zamiana wartości liczby calkowitej zapamiętanej w zmiennej 'j' na string s1
s2= num2str(x, 4) zamiana liczby rzeczywistej na napis (string) z 4
miejscami znaczącymi
title(['rxy=',num2str(x)]) przykład umieszczania kombinowanej informacji
w opisie rysunku danego jako 'figure'
disp(['rxy=',num2str(x)]) drukowanie informacji na aktualnym wyjściu
(monitorze)
Funkcja fplot Wykresy funkcji jednej zmiennej, patrz help Matlaba.
Funkcja inline patrz help Matlaba
Obliczanie prostej regresji y=b1*x+b0 przy danych wektorach kolumnowych
x i y – metodą najmniejszych kwadratów (LSE).
Można tu skorzystać z następującego sposobu: Obliczamy C, macierz kowariancji
dla macierzy [x,y]. Wtedy współczynniki b1 i b0 określające prostą regresji
wyznaczamy za pomocą następujących instrukcji:
C=cov([x,y]); b1=C(1,2)/C(1,1); b0=mean(y)-b1*mean(x):
Mając współczynniki regresji b1 i b0, dodajemy prostą regresji do wykresu rozproszenia
sporządzonego na podstawie wektorów x i y następującymi rozkazami:
xx=linspace(min(x), max(x),50) – dzielimy przedział
[min(x), max(x)] na 50 równych podprzedzialików
hold on, plot(xx, b1*xx+b0)
histogram, konstrukcja:
hist(x) lub hist(x, nbin), gdzie x
jest wektorem danych, a nbin liczbą przedziałów (nb of bins),
patrz help Matlaba
Zmiana koloru słupków histogramu na np. czerwony z czarnym obrysem:
h= findobj(gca, 'type', 'patch');
set(h, 'MarkerFaceColor','r', 'MarkerEdgeColor', 'k'):
set(h, 'Facealpha',[0.80]) - reguluje przeźroczystość, można
również ustawiać przez funkcję alpha, np. alpha([0.4]).
pcolor(C) używane np. w Conway's game of life.
PCOLOR(C) is a pseudocolor or "checkerboard" plot of matrix C.
The values of the elements of C specify the color in each
cell of the plot. In the default shading mode, 'faceted',
each cell has a constant color and the last row and column of
C are not used.