Podstawowe opcje wykresów
Podstawowe opcje wykresów
Kilka słów o funkcjach ezplot, plot i fplot.
Wykresy funkcji jednej zmiennej będziemy wykonywać na dwa sposoby: za pomocą funkcji ezplot i plot lub fplot. Funkcje te przyjmują wiele różnych rodzajów parametrów, o czym można poczytać w helpie.
Zadanie (1)
Wypróbuj następujące komendy:
>> ezplot('x^2-2*x+1')
>> ezplot('sin(x^2)',[0,pi])
Drugi wykres pojawi się w tym samym oknie co pierwszy, nadpisując go. Aby tego uniknąć, spróbuj:
>> figure
>> ezplot('x^2-2*x+1')
>> figure
>> ezplot('sin(x^2)',[0,pi])
>> ezplot('sin(t)','cos(t)',[0,pi]) % parametrycznie: x=cos(t), y=sin(t)
>> fh = @(x,y) sqrt(x.^2 + y.^2 – 1); % okrąg o promieniu 1
>> ezplot(fh)
>> axis equal % osie mają mieć te same proporcje
>> ezplot('x^2-y^4')
>> colormap([0 0 1]) % poczytaj o colormap w helpie i przetestuj inne kolory
>> legend('wykresik')
>> ezplot('sin(x)')
>> hold on % hold on pozwoli narysować kolejne elementy na
% bieżącym rysunku bez kasowania poprzednich elementów
>> quiver(-7,0,1,0,14,'LineWidth',2); % polecenie quiver(x,y,u,v,t) rysuje wektor o
>> text(7.1,0,'x') % współrzędnych [u,v] zaczepiony w punkcie (x,y)
>> quiver(0,-5,0,1,10,'LineWidth',2); % mający długość t, domyślna grubość linii to 1
>> text(0,5.1,'y') % text(x,y,'napis') – daje napis w punkcie (x,y)
>> axis equal
>> hold off % kolejne elementy zniszczą poprzedni rysunek
>> ezplot('sin(x)'); % inny sposób na osie – polecenie line
>> line([-2*pi 2*pi],[0 0],'color','g');
>> line([0 0],[-1.5 1.5],'color','g');
Przypatrz się opcjom w menu okienka wykresowego – zapisz któryś z wykresów do pliku graficznego *.jpg lub *.eps (np. w celu późniejszego wykorzystania w latex'u).
Użycie funkcji plot lub fplot jest zwykle bardziej skomplikowane, ale też efekty wizualne prezentują się lepiej. Zapamiętaj następujące style (lub chociaż zapamiętaj, gdzie można je znaleźć):
Kolory | Symbole punktów | Rodzaje linii |
y – yellow m – magenta c – cyan r – red g – green b – blue w – white k – black |
. – punkt o – kółko x – iks + – plus * – gwiazdka s – kwadrat d – romb v – trójkąt w dół ^ – trójkąt w górę < – trójkąt w lewo > – trójkąt w prawo p – pięciokąt h – sześciokąt |
- ciągła : kropkowana -. kropka-kreska -- kreskowana |
Specyfikację można uzupełnić o dodatkowe parametry linii i znaczników:
-
MarkerEdgeColor ‐ kolor krawędzi znacznika w przypadku znaczników wypełnianych,
-
MarkerFaceColor ‐ kolor wypełnienia znacznika,
-
MarkerSize ‐ rozmiar znacznika (w pkt),
-
LineWidth ‐ grubość linii (w pkt).
Polecenie axis ustawia parametry osi bieżącego wykresu. Może mieć argumenty:
-
axis on/off ‐ wyświetlenie lub ukrycie osi,
-
axis equal ‐ zrównanie jednostek na osiach,
-
axis square ‐ wykres na obszarze kwadratowym,
-
axis normal ‐ usuniecie działania equal i square,
-
axis auto/manual ‐ włączenie lub wyłączenie automatycznego doboru podziałki na osiach,
-
axis state ‐ zwraca informacje o ustawieniach osi.,
-
axis(xmin xmax ymin ymax (zmin zmax)) ‐ określenie ręczne zakresów osi. Zastąpienie wybranych parametrów (np. xmin lub xmax) stałymi ‐Inf lub Inf daje możliwość półautomatycznego określania zakresów osi.
Zadanie (2)
Wypróbuj następujące komendy:
>> p=rand(1,10) % ciąg 10 losowych liczb z przedziału (0,1)
>> plot(p,'b') % na niebiesko, połączone ze sobą
>> plot(p,'bs') % na niebiesko, oznaczone kwadratami
>> plot(p,'bs:') % na niebiesko, oznaczone kwadratami i połączone kropkowaną linią
% tak nie powinno się rysować funkcji – trzeba pamiętać o gęstym próbkowaniu dziedziny,
% żeby wykres nie wyszedł „kanciasty”
>> t = [-pi:pi/5:pi]; plot(sin(t))
>> t = [-pi:pi/100:pi]; plot(sin(t))
>> fplot('2*sin(x)',[0,2*pi]) % w fplot podajemy dziedzinę, a nie „co ile próbkować”
>> fplot('2*sin(x)',[0,2*pi],'r.-') % styl linii podajemy na końcu
% rysowanie kilku wykresów w jednym oknie:
>> dwieFunkcje = @(x) [sin(x),x^2];
>> fplot(dwieFunkcje, [-2*pi,2*pi])
% inny sposób na kilka wykresów w jednym oknie:
>> figure
>> fplot('sin(x)',[-2*pi,2*pi],':b')
>> hold on
>> fplot('sin(x*x)',[-2*pi,2*pi],'-r')
>> hold off
% jeszcze inny sposób na kilka wykresów (uwaga - różne dziedziny!):
>> dz = -5*pi:pi/100:pi; % dziedzina funkcji z
>> z = sin(t)./t;
>> dy = -pi:pi/100:2*pi; % dziedzina funkcji y
>> y = cos(x);
>> plot(dz,z,dy,y);
>> plot(dz,z,'r*:',dy,y,'y-') % to samo z różnymi stylami dla każdej funkcji
>> xlabel('to są iksy')
>> ylabel('sinusy różne')
>> title('Moj wykres')
% kolejny fajny przykład:
>> t = 0:pi/100:2*pi;
>> y = sin(t);
>> y1 = sin(t-0.25);
>> y2 = sin(t-0.5);
>> plot(t,y,'-r',t,y1,'c--',t,y2,':'); % tutaj wszystkie funkcje mają te same dziedziny
>> legend('wykres 1','i drugi','ostatni') % przykład złożonej legendy
% a to jest już przerost formy nad treścią:
>> t = 0:pi/20:2*pi;
>> plot(t,sin(t.^2),'-mo',... % trzy kropki oznaczają mniej więcej tyle: „to polecenie jest tak
'LineWidth',2,... % długie, że pogubiłbym się wpisując je w jednej linii, więc
'MarkerEdgeColor','m',... % wolę rozdzielić je na kilka linii dla większej przejrzystości”
'MarkerFaceColor',[0.63 , 1 , 0.49 ],...
'MarkerSize',9)
% przykład z siatką
>> fplot('sin(x)',[-2*pi,2*pi],':b')
>> grid on % włączanie siatki
>> grid off % i wyłączanie
W powyższym ćwiczeniu pojawiła się opcja
'MarkerFaceColor',[0.63, 1, 0.49 ]
- te trzy liczby oznaczają składowe koloru w formacie RGB (red, green i blue). W programach graficznych jesteśmy przyzwyczajeni do podawania tych składowych w formie liczb całkowitych od 0 do 255. Natomiast w MATLABie należy podać liczby od 0 do 1. Jak to przeliczamy? Przykładowo, kolor RGB(124,55,39) będzie miał współrzędne [124/255, 55/255, 39/255].
Zadanie (3)
Wypróbuj następujące komendy:
>> t = (-5:0.2:5)*pi;
>> y = sin(t)./t;
>> bar(t,y) % wykres słupkowy
>> stem(t,y) % wykres łodyżkowy
>> stairs(t,y) % wykres schodkowy
>> y = randn(1,1000);
>> hist(y) % histogram
>> x=-pi:0.1:pi;
>> area(x,sin(x)) % wykres z zaznaczonym polem
>> x = [1,3,0.5,2.5,2];
>> pie(x) % wykres kołowy
>> pie(x,[0,1,0,0,1]) % wykres kołowy z informacją, które kawałki wyodrębnić