Sunteți pe pagina 1din 14

8.

GRAFICE I INTERFEE GRAFICE N MATLAB


8.1. Tehnici de plotare
n general, pentru a realiza o reprezentare grafic, trebuie parcurse etapele urmtoare:
Etapa

Instruciuni

1.Pregtirea datelor

x = 0:0.2:12;
y1 = bessel(1,x);
y2 = bessel(2,x);
y3 = bessel(3,x);

2. Selectarea ferestrei
grafice i pozionarea
graficului n fereastr
3. Apelarea unei
funcii elementare de
plotare
4. Selectarea
caracteristicilor liniei i
markerului.
5. Setarea limitelor axelor,
gridare (caroiere)
6. Completarea graficului
cu etichete pe axe,
legend, text

figure(1)
subplot(2,2,1)

7. Export grafice

print -depsc -tiff -r200 myplot

h = plot(x,y1,x,y2,x,y3);

set(h,'LineWidth',2,{'LineStyle'},{'--';':';'-.'})
set(h,{'Color'},{'r';'g';'b'})
axis([0 12 -0.5 1])
grid on
xlabel('Time')
ylabel('Amplitude')
legend(h,'First','Second','Third')
title('Bessel Functions')
[y,ix] = min(y1);
text(x(ix),y,'First
Min
\rightarrow',...
'HorizontalAlignment','right')

Funciile de baz folosite la plotare sunt prezentate n tabelul urmtor:


Funcie
Utilizare
Plot
Genereaz grafice 2-D cu scalare liniar a axelor
Plot3
Genereaz grafice 3-D cu scalare liniar a axelor
loglog
Genereaz grafice cu scalare logaritmic a axelor
semilogx
Genereaz grafice cu scalare liniar a axei y i cu scalare logaritmic a axei x
semilogy
Genereaz grafice cu scalare liniar a axei x i cu scalare logaritmic a axei y
plotyy
Genereaz grafice cu dubl reprezentare a axei y (pe stnga i pe dreapta)

8.1.1. Plotri 2 D elementare


Generarea graficelor
Funcia plot are diferite forme n funcie de argumentele de intrare.
Dac de exemplu y este un vector, plot(y) produce un grafic liniar al elementelor lui
y versus indexul elementelor sale.

Dac se specific doi vectori ca argumente, plot(x,y) produce graficul lui y versus
x.

Exemplu:

t = 0:pi/100:2*pi;
y = sin(t);
plot(t,y)
grid on

Se pot realiza grafice multiple utiliznd un singur apel al funciei plot. MATLAB-ul
realizeaz automat o reprezentare cu culori diferite pentru a permite distingerea graficelor.
Exemplu:
y2 = sin(t-0.25);
y3 = sin(t-0.5);
plot(t,y,t,y2,t,y3)

Specificarea stilului de linie


Se pot crea diferite tipuri de linii pentru fiecare set de date prin folosirea unor identificatori de
tip string n funcia plot. Exemplu:
t = 0:pi/100:2*pi;
y = sin(t);
y2 = sin(t-0.25);
y3 = sin(t-0.5);
plot(t,y,'-',t,y2,'--',t,y3,':')

Funciile de plotare accept deci argumente de tip caracter care specific stilul liniei,
simbolurile utilizate pentru marker, culoarea etc. Forma general este:
plot(x,y,'linestyle_marker_color')

unde linestyle_marker_color este un ir de caractere construit din:


Un stil de linie (de exemplu linie punctat, plin etc.)
Un tip de marker (de exemplu x, *, o, etc.)
Un specificator de culoare (c,m,y,k,r,g,b,w)
Se poate folosi un specificator sau mai muli, n orice ordine. De exemplu,
'go--'
definete o linie ntrerupt, cu markere circulare, ambele colorate n verde.
Specificarea culorii i dimensiunii liniilor
Caracteristicile liniilor se pot controla prin specificarea unor valori pentru proprietile linilor:
LineWidth specific limea unei linii.
MarkerEdgeColor seteaz culoarea markerului sau culoarea marginilor markerului n
cazul anumitor forme (cerc, ptrat etc.)
MarkerFaceColor seteaz culoarea interiorului markerelor.
MarkerSize specific dimensiunea markerului.

Exemplu:
x = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'--rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10)

Suprapunerea unor grafice peste un grafic existent


Se pot aduga grafice peste unul existent cu comanda hold. Dac se seteaz hold on,
MATLAB-ul nu nltur graficul existent, ci suprapune noul grafic n aceeai fereastr grafic.
Exemplu:
semilogx(1:100,'+')
hold on
plot(1:3:300,1:100,'--')
hold off

Plotarea simultan a markerelor i liniilor


Pentru plotarea markerelor (care indic punctele corespunztoare datelor) i a liniilor (care
unesc aceste date) se specific att tipul markerului ct i stilul liniei. Exemplu:
x = 0:pi/15:4*pi;
y = exp(2*cos(x));
plot(x,y,'-r',x,y,'ok')

Plotarea datelor din matrici


Atunci cnd funcia plot este utilizat cu un singur argument de tip matrice:
plot(Y)
va fi realizat un grafic pentru fiecare coloan a matricii, cu axa x reprezentnd indexul de linie 1:m,
cu m numrul liniilor din Y.
Exemplu: cu instruciunea Z = peaks; este creat o matrice 49x49 obinut printr-o
evaluare de funcie. Dac plotm matricea cu plot(Z)vom avea un grafic cu 49 de linii.

Plotarea cu axa Y dubl


Comanda plotyy permite crearea unor grafice pentru dou seturi de date i cu reprezentare
dubl a axei Y, pe partea stng i pe partea dreapt.
Exemplu:
t = 0:pi/20:2*pi;
y = exp(sin(t));
plotyy(t,y,t,y,'plot','stem')

Setarea parametrilor axelor


MATLAB-ul seteaz automat limitele axelor i gradarea acestora. Se pot ns folosi i setrile
utilizatorului, cu comenzile:
axis seteaz axele pentru fereastra grafic curent.
axes creeaz axe noi cu caracteristici specificate.
get i set permit obinerea i setarea unor proprieti ale axelor.
gca returneaz identificatorul axelor curente.
5

Se pot parcurge n detaliu aceste comenzi prin apelarea la help.


Ferestre de tip figur
MATLAB-ul direcioneaz ieirile grafice spre o fereastr distinct de fereastra de comand.
Aceast fereastr grafic este denumit figur (figure). (a se vedea paragraful 3.3).
Funcia figure genereaz ferestre grafice. De exemplu,
figure

genereaz o nou fereastr i o face fereastra curent.


Afiarea unor grafice multiple n aceeai fereastr grafic
Se poate realiza o afiare a mai multor grafice n aceeai fereastr prin intermediul funciei
subplot.
Funcia subplot(m,n,i) desparte fereastra de tip figur ntr-o matrice m x n de mici
subploturi (subgrafice) i selecteaz subplotul i ca grafic curent. Exemplu:
t = 0:pi/20:2*pi;
[x,y] = meshgrid(t);
subplot(2,2,1)
plot(sin(t),cos(t))
axis equal
subplot(2,2,2)
z = sin(x)+cos(y);
plot(t,z)
axis([0 2*pi -2 2])
subplot(2,2,3)
z = sin(x).*cos(y);
plot(t,z)
axis([0 2*pi -1 1])
subplot(2,2,4)
z = (sin(x).^2)-(cos(y).^2);
plot(t,z)
axis([0 2*pi -1 1])

Comenzi de marcare, etichetare i gradare a graficelor


MATLAB-ul furnizeaz comenzi de etichetare a fiecrei axe i de plasare a unui text n orice loc
din grafic. Comenzile sunt prezentate n tabelul urmtor.

Comand

Descriere

title

Adaug un titlu
Adaug o etichet pe axa x
Adaug o etichet pe axa y
Adaug o etichet pe axa z
Adaug o legend
Afieaz un text la o locaie specificat
Plaseaz textul pe grafic utiliznd mouse-ul

xlabel
ylabel
zlabel
legend
Text
Gtext

Etichetarea axelor
Se pot aduga etichete pe axe cu comenzile xlabel, ylabel, zlabel.
Exemplu:
xlabel('t = 0 to 2\pi','FontSize',16)
ylabel('sin(t)','FontSize',16)
title('\it{Value of the Sine from Zero to Two
Pi}','FontSize',16)

MATLAB-ul interpreteaz caracterele care urmeaz dup backslash "\" ca i comenzi TeX.
Aceste comenzi permit reprezentarea unor simboluri cum ar fi literele greceti sau sgeile.
Adugarea textelor
Prin utilizarea funciei text se poate plasa un text (ir de caractere) oriunde pe grafic.
Exemplu:
text(3*pi/4,sin(3*pi/4),...
'\leftarrowsin(t) = .707',...
'FontSize',16)
text(pi,sin(pi),'\leftarrowsin(t) = 0',...
'FontSize',16)
text(5*pi/4,sin(5*pi/4),'sin(t)=-.707\rightarrow',...
'HorizontalAlignment','right',...
'FontSize',16)

Plasarea textului n mod interactiv


Dac utilizm funcia gtext se poate plasa un text n mod interactiv, cu mouse-ul, oriunde pe
grafic. Aceast funcie accept ca argument un ir de caractere i ateapt pn cnd utilizatorul
selecteaz un loc pe grafic cu ajutorul mouse-ului.
Se poate utiliza i Plot Editor pentru plasarea textului (a se vedea paragraful 3.3).
8.1.2. Grafice 2 D specializate
MATLAB-ul permite lucrul cu o mare varietate de tipuri de grafice, astfel nct informaiile s
poat fi prezentate eficient.
Tipul de grafic selectat depinde n mod esenial de natura datelor prelucrate.
Graficele de tip bare sau arie (bar, area) sunt utile pentru vizualizarea unor rezultate,
compararea lor i afiarea unei contribuii individuale din total.
Graficele de tip statistic (pie charts) indic contribuiile individuale dintr-un total.
Histogramele (histogram) sunt utile pentru a indica distribuia valorilor datelor.
Graficele de tip stem i stairstep sunt utile pentru date discrete.
Graficele compass, feather, quiver sunt utile pentru plotarea vectorilor de tip
direcie i vitez.
Graficele de tip contur (contour) sunt utile la reprezentarea unor regiuni de valori egale
ale datelor.
Plotrile interactive (interactive) permit selectarea unor puncte de plotare n mod
interactiv.
Graficele de tip animaie (animations) adaug date la grafice consecutive i creeaz o
animaie.
Grafice de tip Bar i Area
Funcie
Descriere
Bar
Barh
bar3
bar3h

Afieaz coloanele unor matrici mxn ca m grupe de n bare verticale


Afieaz coloanele unor matrici mxn ca m grupe de n bare orizontale
Afieaz coloanele unor matrici mxn ca m grupe de n bare verticale 3-D
Afieaz coloanele unor matrici mxn ca m grupe de n bare orizontale tridimensionale
3-D
Area
Afieazdateledinvectoricasuprafee
Grafice Bar grupate
Ca setare implicit, un grafic cu bare reprezint fiecare element dintr-o matrice cu o singur
bar. n cazul unui grafic 2-D, barele create cu funcia bar sunt distribuite de-a lungul axei x, cu
8

fiecare element dintr-o coloan desenat la alt locaie. Toate elementele dintr-o linie sunt
reprezentate grupat la aceeai locaie pe axa x.
Exemplu:
Y = [5
8
9
5
4
bar(Y)

2
7
8
5
3

1
3
6
5
2];

Grupele de coloane
reprezint linii din
Y.

Grafice Bar 3-D separate


Funcia bar3, n cea mai simpl form, traseaz fiecare element ca un bloc separat de tip 3-D,
cu elementele fiecrei coloane distribuite de-a lungul axei y. Barele care reprezint elementele din
prima coloan a unei matrice sunt centrate la 1 pe axa x .a.m.d. Barele care reprezint elementele
din ultima coloan sunt centrate la valoarea size(Y,2) de pe axa x. Exemplu: bar3(Y).

Ultimul grup de
bare reprezint
ultima linie din Y

Grafice Bar 3-D grupate


Pentru a realiza un grafic de bare grupate 3 D se specific argumentul 'group':
bar3(Y,'group')

Ultimul grup de bare


reprezint ultima linie

Grafice statistice - pie charts


Graficele pie afieaz procentul cu care fiecare element al unui vector sau matrice contribuie la
suma tuturor elementelor. Funciile pie i pie3 creeaz grafice 2-D i 3-D.
n continuare prezentm un exemplu de vizualizare a ponderii a trei produse din totalul
vnzrilor. Se consider o matrice X, pentru care fiecare coloan reprezint vnzrile anuale pentru
cte un produs, pe o perioad de nregistrri de 5 ani:
X = [19.3
34.2
61.4
50.5
29.4

22.1
70.3
82.9
54.9
36.3

51.6;
82.4;
90.8;
59.1;
47.0];

Se pot calcula vnzrile pentru fiecare produs n cei 5 ani cu ajutorul funciei:
x = sum(X);

Dac utilizm argumentul de intrare explode putem reprezenta ntr-un mod explodat care
dintre produse a avut o contribuie mai mare la vnzri (de exemplu). Programul are urmtoarea
form:
explode = zeros(size(x));
[c,offset] = max(x);
explode(offset) = 1;
h = pie(x,explode); colormap summer

Crearea de grafice tip contur


Funciile contour i contour3 afieaz contururi 2-D i 3-D. Funciile cer un singur argument,
i anume o matrice, ale crei date sunt interpretate ca nlimi fa de un plan.
Pentru a seta numrul de niveluri de contur (implicit se realizeaz automat pe baza valorilor
minime i maxime) se folosete un argument suplimentar opional. De exemplu,
[X,Y,Z] = peaks;
contour(X,Y,Z,20)

afieaz 20 de contururi ale funciei peaks ntr-o vedere bidimensional.

Dac dorim o reprezentare 3 D putem folosi comenzile:


[X,Y,Z] = peaks;
contour3(X,Y,Z,20)
h = findobj(`Type','patch');

10

set(h,'LineWidth',2)
title('Twenty Contours of the peaks Function')

Animaie
Se pot crea secvene animate n MATLAB pe dou ci:
Salvarea unui numr de imagini i rularea lor ca pe un film.
tergerea continu i redesenarea unor obiecte pe ecran, fcnd schimbri n mod
incremental la fiecare redesenare.
Filme
Se parcurg trei etape:
Se folosete moviein pentru iniializarea memoriei pentru o matrice suficient de mare.
Se utilizeaz getframe pentru a genera fiecare cadru de film, care este returnat ca un
vector coloan cu care se poate construi o matrice de tip film.
Se folosete movie pentru rularea filmului de un numr specificat de ori cu o vitez
specificat.
tergere i redesenare
Pot fi create diferite efecte prin selectarea unor moduri de tergere. Pentru crearea unei animaii
sunt utile trei moduri de tergere:
none - MATLAB nu terge obiectele.
background - MATLAB terge obiectul i l redeseneaz n background. Acest mod terge
obiectul i tot ce este sub el (linii de grid etc.).
xor Acest mod terge doar obiectul i este cel mai folosit la animaie.
Pentru vizualizarea unor efecte de animaie i construirea unor exemple proprii este indicat
utilizarea facilitii demo a MATLAB-ului.
8.1.3. Plotri tridimensionale (3 D)
Paii tipici care trebuie parcuri pentru trasarea unor grafice tridimensionale sunt prezentai n
continuare.
Etapa

Instruciuni

1.Pregtirea datelor

Z = peaks(20);

2. Selectarea ferestrei
grafice i poziionarea
graficului n fereastr

figure(1)
subplot(2,1,2)

11

3. Apelarea unei funcii de


plotare 3-D
4a. Setarea unei hri de
culori i a unui algoritm
de umbrire

h = surf(Z);

4b. Adugarea unei


iluminri

light('Position',[-2,2,20])
lighting phong
material([0.4,0.6,0.5,30])
set(h,'FaceColor',[0.7 0.7 0],...
'BackFaceLighting','lit')

5. Setarea unui punct de


vizualizare

view([30,25])
set(gca,'CameraViewAngleMode','Manual')

colormap hot
shading interp
set(h,'EdgeColor','k')

6. Setarea limitelor axelor axis([5 15 5 15 -8 8])


set(gca'ZTickLabel','Negative||Positive')
i a marcajelor
7. Setarea
proporionalitii

set(gca,'PlotBoxAspectRatio',...
[2.5 2.5 1])

8. Completarea graficului xlabel('X Axis')


cu etichete, legend, text ylabel('Y Axis')

zlabel('Function Value')
title('Peaks')

9. Operaiuni de tiprire

set(gcf,'PaperPositionMode','auto')
print -dps2

Reprezentarea unei matrice ca o suprafa


MATLAB-ul definete o suprafa prin coordonatele z ale punctelor de deasupra unui caroiaj
dreptunghiular n planul x-y. Graficul este format prin unirea punctelor adiacente cu linii drepte.
Plotrile de suprafee sunt utile pentru vizualizarea matricilor care sunt prea mari pentru a fi afiate
n form numeric i pentru trasarea graficelor funciilor de dou variabile.
MATLAB-ul poate crea diferite forme de trasare a suprafeelor:
Funcie

Utilizare

mesh, surf

Trasare a unei suprafee

meshc, surfc

Trasarea suprafeei, inclusiv conturul

meshz

Trasarea suprafeei, inclusiv planul de referin

pcolor
surfl

Plotare plan a suprafeei (valorile sunt proporionale doar cu culoarea)


Trasarea suprafeei luminat din direcia specificat

surface

Funcie de nivel sczut pentru crearea unor obiecte tip grafice suprafa

12

Grafice realizate cu mesh i surf


Comenzile mesh i surf genereaz suprafee 3-D din datele provenite de la matrici. Dac Z
este o matrice pentru elementele creia Z(i,j) se definete nlimea unei suprafee peste un
caroiaj (i,j) atunci
mesh(Z)

genereaz o imagine colorat, caroiat a suprafeei i o afieaz n vedere 3-D.


Similar,
surf(Z)

genereaz o imagine colorat, continu a suprafeei i o afieaz n vedere 3-D.


n cazul comenzii mesh se pot folosi comenzi de tipul shading pentru eliminarea liniilor de
tip mesh (shading flat) sau pentru interpolarea umbririlor de-a lungul faetelor suprafeei
(shading interp).
Vizualizarea funciilor de dou variabile
Primul pas care trebuie parcurs pentru trasarea graficului unei funcii de dou variabile, z =
f(x,y), este de a genera matricile X i Y care definesc domeniul n care va fi vizualizat funcia. Apoi
se utilizeaz aceste matrici pentru evaluare i trasarea graficului funciei.
Funcia meshgrid transform domeniul specificat prin doi vectori, x i y, n matricile X i Y.
Liniile matricei X sunt copii ale vectorului x i coloanele matricei Y sunt copii ale vectorului y.
Pentru a vedea cum se folosete meshgrid, vom considera funcia sin(r)/r (numit funcia
sinc). Pentru a evalua funcia ntre -8 i 8 i pentru x i pentru y, este necesar doar un argument de
tip vector pentru meshgrid, care va fi utilizat n ambele direcii:
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;

Matricea R conine distanele de la centru (originea), iar eps este adugat pentru a evita
mprirea la zero.
Acum se poate forma funcia sinc i se poate realiza plotarea cu mesh.
Z = sin(R)./R;
mesh(Z)

Se poate realiza o mbuntire a reprezentrii grafice n condiiile utilizrii acelorai date, prin
folosirea unor faciliti de iluminare i ajustare a imaginii (daspect, axis, camlight,
view).
Exemplu:
13

surf(X,Y,Z,'FaceColor','interp','EdgeColor','none',...
'FaceLighting','phong')
daspect([5 5 1]);axis tight;view(-50,30);camlight left

Harta culorilor
Fiecare fereastr grafic MATLAB are asociat o hart a culorilor (colormap), care este o
matrice cu trei coloane a cror lungime este egal cu numrul de culori definite. Fiecare linie a
matricii definete o culoare particular prin specificarea a trei valori n domeniul 0 1. Aceste
valori definesc componentele RGB (red, green, blue) (adic intensitile componentelor video rou,
verde i albastru). Funcia colormap fr argumente returneaz harta figurii curente.
Funcia colorbar afieaz n fereastra grafic harta curent a culorilor, sub forma unei bare
aezate lng grafic. Exemplu:
[x,y] = meshgrid([-2:.2:2]);Z = x.*exp(-x.^2-y.^2);
surf(x,y,Z,gradient(Z));colorbar

14

S-ar putea să vă placă și