Sunteți pe pagina 1din 25

17.

REPREZENTĂRI GRAFICE ÎN DOUĂ


DIMENSIUNI

17.1. Grafice de bază X-Y (2D)


Pentru reprezentarea datelor în coordonate lineare se utilizează funcţia plot,
care se poate apela prin:
• plot(x,y) – care reprezintă grafic vectorul y funcţie de vectorul x, cu
următoarele precizări:
 dacă x este un scalar şi y un vector, de lungime n=length(y),
se trasează un număr n de puncte discontinui pe axa y, în
dreptul valorii x, ca în figura 17.1, trasată pentru x=1 şi
y=1:10, cu plot(x,y);
 dacă x este un vector şi y un alt vector, atunci lungimea celor
doi vectori trebuie să fie aceeaşi, n=length(x)=length(y) şi se
trasează graficul variaţiei continue a lui y funcţie de x, ca în
figura 17.2, trasată pentru x=1:10 şi y=x.^1.25, cu plot(x,y);
 dacă x este un vector şi y o matrice, atunci nl=length(x) trebuie
să fie egal cu m din [n,m]=size(y), şi se trasează graficul variaţiei
continue a fiecărei coloane a lui y funcţie de x, ca în figura 17.3,
trasată pentru x=1:10 şi y=[x; x.^1.25], cu plot(x,y);
 dacă x şi y sunt matrice, de aceeaşi dimensiune
(size(x)=size(y)), se reprezintă coloanele lui y funcţie de
coloanele lui x, ca în figura 17.4, trasată pentru
x=[ 1 1 ; 2 2; 3 3; 4 4; 5 5] şi
y=[1.000 7.4767; 2.3784 5.6569; 3.9482 3.9482; 5.6569
2.3784; 7.4767 1.0000] , cu plot(x,y);
• plot(y) – care reprezintă grafic argumentul y funcţie de indici cu
următoarele precizări:
 dacă argumentul y este complex, atunci plot(y) este echivalent
cu plot(real(y),imag(y)), ca de exemplu pentru y= [1+i
2+1.4142i 3+1.7321i 4+2i 5+2.2361i 6+2.4495i 7+2.6458i
8+2.8284i 9+3i 10+3.1623i]; rezultă figura 17.5;
 dacă y este vector (linie sau coloană), funcţia plot trasează
graficul y=y(i), unde i=1, 2, …, n este numărul de ordine al
elementului y;
 dacă y este o matrice de m x n, funcţia plot trasează graficele
yj=yj(i), unde i=1, 2, …, n este numărul de ordine al
elementului yj de pe coloana j, cu j=1, 2, …, m;
360 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE

• plot(x1,y1,x2,y2, …, xn,yn) – reprezintă grafic simultan mai multe grafice


în acelaşi sistem de coordonate, respectiv y1=f(x1), y2=f(x2), …yn=f(xn);
• plot(x,y,’linie-tip’) – apare specificat tipul de linie şi culoare utilizată,
după cum se specifică în tabelul 17.1.

Fig. 17.1. Graficul y vector şi x scalar


Deci, graficele se pot reprezenta utilizând linii, markere şi culori după codul
din tabelul 17.1.

Tabelul 17.1
Tipuri de linii, markere şi culori utilizate la trasarea graficelor

Culori Markere tip Linii tip


y galben . punct - continuă
m mov o cerc : punctată
c albastru deschis x x -. prin puncte
r roşu + plus (+) -- întreruptă
g verde * *
b albastru s pătrat
w alb d romb
k negru v triunghi cu vărful în jos
^ triunghi cu vărful în sus
< triunghi cu vărful la stânga
> triunghi cu vărful la dreapta
p stea cu 5 colţuri
h stea cu 6 colţuri
Reprezentări grafice în doua dimensiuni 361
361

Pentru reprezentările grafice, se asociază fiecărei caracteristici un şir de 1÷3


caractere, dintre cele menţionate mai sus.

Fig. 17.2. Variaţia lui y vector funcţie de x vector

Fig. 17.3. Variaţia lui y matrice funcţie de x vector


Aceste şiruri de caractere trebuie cuprinse între apostrofuri şi menţionate în
combinaţia culoare-marker sau culoare-linie-tip. Dacă se precizează o singură
caracteristică (marker, linie sau culoare), cea de-a doua este selectată automat de
calculator.
Dacă nu se specifică culoarea, Matlab-ul foloseşte implicit galben. Pentru
362 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE

grafice multiple se utilizează succesiv primele şase culori din tabel.

Fig. 17.4. Variaţia lui y matrice funcţie de x matrice

Fig. 17.5. Reprezentarea grafică a numărului complex y


Funcţia plot returnează un vector coloană al identificatorilor de control al
caracteristicilor obiectelor linie. Obiectele linie create cu plot sunt copii ai axelor
curente.
Perechile (x,y) pot fi urmate de perechile parametru/valoare, pentru a
specifica proprietăţile suplimentare ale liniilor.
Reprezentări grafice în doua dimensiuni 363
363

Pentru reprezentările grafice în coordonate logaritmice sau


semilogaritmice se utilizează funcţiile loglog, semilogx, semilogy, care se
apelează astfel:
• loglog(x,y) – reprezintă grafic pe log(y) funcţie de log(x), adică scalează
ambele axe, utilizând logaritmul în baza 10;
• semilogx(x,y) – reprezintă grafic pe y funcţie de log(x), adică scalează
numai axa x , utilizând logaritmul în baza 10;
• semilogy(x,y) – reprezintă grafic pe log(y) funcţie de x, adică scalează
numai axa y, utilizând logaritmul în baza 10.
Modul de utilizare al acestor funcţii este la fel ca acela al funcţiei plot. De
exemplu, dacă se doreşte reprezentarea în coordonate semilogaritmice, pe axa y, a
funcţiei y=10x, unde x=0:10, atunci programul Matlab este:
x=0:10;y=10.^x;semilogy(x,y,'<-b'); ylabel('log(y)'); xlabel('x'),
iar graficul este prezentat în figura 17.6.

Fig. 17.6. Reprezentarea grafică a funcţiei y=10x în coordonate semilogaritmice (axa y)


În grafic se evidenţiază reprezentarea cu linie continuă şi marcarea cu
triunghiuri cu vârful la stânga, iar culoarea este albastră. În plus, s-a utilizat xlabel
şi ylabel pentru marcarea coordonatelor x şi, respectiv, log(y).
Reprezentarea în coordonate polare se face cu funcţia polar, care se apelează
cu una dintre sintaxele: polar(teta,r) sau polar(teta,r,’linie-tip’), în care r este raza,
iar teta este unghiul în radiani. Modul de folosire al opţiunii linie-tip este identic cu
cel pentru funcţia plot.
Pentru reprezentarea în coordonate polare ale funcţiei f(x)=sin(t)cos(t), cu
t=0:2*pi, se utilizează secvenţa Matlab:
t=0:0.1:2*pi; f=sin(t).*cos(t); polar(t,f); xlabel('t') ; ylabel('f=sin(t)cos(t)');
364 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE

şi se obţine reprezentarea din figura 17.7.

Fig. 17.7. Reprezentarea în coordonate polare


Trasarea pe acelaşi grafic a lui y1 funcţie de x1 cu axa y1 la stânga şi a lui y2
funcţie de x2 cu axa y2 la dreapta se face cu plotyy(x1,y1,x2,y2), iar reprezentarea
grafică este în figura 17.8.
Pentru trasare s-a considerat x1=0:0.1:10;y1=x1.^2; x2=0:0.1:10;y2=x2.^0.2.

Fig. 17.8. Reprezentarea cu funcţia plotyy


Reprezentări grafice în doua dimensiuni 365
365

Funcţia plotyy(x1,y1,x2,y2,'fun') utilizează funcţia fun pentru plotare, care


poate fi o funcţie internă pentru plotare precum: plot, semilogx, semilogy, loglog,
stem, care acceptă sintaxa H=fun(x,y).
Dacă se doreşte utilizarea pentru axele din stânga şi dreapta a două moduri
diferite, se utilizează funcţia plotyy(x1,y1,x2,y2,'fun1', 'fun2'), unde pentru
perechea (x1,y1) se utilizează fun1(x1,y1), iar pentru perechea (x2,y2) se utilizează
fun2(x2,y2).
Funcţia [ax,h1,h2]=plotyy(x1,y1,x2,y2,'fun1', 'fun2'), permite returnarea
locului unde sunt create axele în ax(1), pentru axa din stânga, în ax(2), pentru axa
din dreapta şi a obiectelor grafice în h1 şi h2.
De exemplu, pentru
x1=0:0.1:10; y1=x1.^2; x2=0:0.1:10; y2=x2.^0.2;
comanda,
[ax,h1,h2]=plotyy(x1,y1,x2,y2,'semilogy','stem'),
returnează,
ax =
100.0056 101.0193
h1 =
3.0334
h2 =
102.0118
103.0167
iar graficul este redat în figura 17.9.

Fig. 17.9. Reprezentarea cu funcţia plotyy(x1,y1,x2,y2,'semilogy','stem')


366 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE

17.2. Adnotări pe grafice


Pentru adnotarea şi editarea graficelor se poate utiliza pachetul Plotedit.
Pentru a se intra în modul de editare se tastează comanda plotedit on, sau simplu
plotedit, ceea ce deschide fereastra de plotare cu meniul corespunzător, care
permite să se insereze etichete pentru axe, titlul graficului, legenda, bara de
culoare, linii, text, axe şi să se regleze luminozitatea. Orice deschidere a unei figuri
Matlab, având extensia fig, permite editarea acesteia.
Ieşirea din modul de editare se face prin comanda plotedit off.
Adăugarea unei legende la un grafic se face prin comanda legend. Cea mai
comodă şi comună apelare este dată în exemplul de mai jos,
x = 0:.2:12;
plot(x,bessel(1,x),x,bessel(2,x),x,bessel(3,x));
legend('First','Second','Third',0);
reprezentat în figura 17.10.

0.6
First
0.5 Second
Third
0.4

0.3

0.2

0.1

-0.1

-0.2

-0.3

-0.4
0 2 4 6 8 10 12

Fig.17.10. Plasarea legendei pe grafic


De menţionat că „0” semnifică faptul că se alege cel mai bun plasament al
legendei pe grafic, care să nu intre în contradicţie cu datele. În locul valorii „0” se
mai pot utiliza: 1 sau lipsă, ceea ce poziţionează legenda în partea dreaptă
superioară în interior; 2, ce poziţionează legenda în partea stângă superioară în
interior; 3, care plasează legenda în partea de jos stânga şi în interior; 4, ce plasează
legenda în partea inferioară stânga şi în interior; -1, care plasează legenda în partea
dreaptă sus şi în exterior.
De menţionat că legenda se poate muta pe grafic în poziţia dorită prin apăsare
Reprezentări grafice în doua dimensiuni 367
367

mouse stânga şi apoi mutarea în poziţia dorită.


Scanarea graficului, pentru poziţionarea legendei, se execută cu funcţia
lscan, care găseşte cel mai bun plasament al legendei, care să nu se suprapună
peste grafic şi să fie vizibilă.
Mutarea legendei se face automat, cu funcţia moveaxis, apelată de legend şi
instalată automat în ButtonDownFcn.
Pentru precizarea titlului graficului curent se utilizeză funcţia title, care se
apelează cu sintaxa:
title('Titlul dorit')
unde 'Titlul dorit' este un şir de caractere care reprezintă titlul graficului.
Precizarea numelui mărimilor reprezentate pe fiecare axă, precum şi a
unităţilor de măsură folosite, se execută cu funcţia xlabel, pentru axa x, ylabel,
pentru axa y şi zlabel, pentru axa z. Acestea se apelează cu sintaxele:
xlabel('text dorit') ylabel('text dorit') zlabel('text dorit'),
unde 'text dorit' este un şir de caractere, care reprezintă, în general, numele axei,
unitatea de măsură sau alte elemente utile ale axei graficului curent. Repetarea
instrucţiunii, cu un alt şir de caractere, conduce la înlocuirea textului anterior, fără
a fi necesară refacerea reprezentării grafice.
Plasarea unui şir de caractere, de exemplu, textul, în câmpul grafic, la
coordonatele (x, y) sau (x, y, z), se realizează cu funcţia text, apelată cu sintaxa:
text(x,y,'textul') sau text(x,y,z,'textul').
Coordonatele grafice sunt date în unităţi de măsură ale ultimului grafic.
Dacă coordonatele sunt vectori (X şi Y), funcţia text scrie şirul de caractere
„textul”, la toate poziţiile date de perechile (X,Y). Dacă „textul” este un şir de
caractere de aceeaşi lungime cu vectorii X şi Y, funcţia marchează fiecare punct cu
linia, markerul sau caracterul corespunzător din şirul „textul”.
Apelată cu sintaxa text(X,Y,'textul','sc'), funcţia interpolează puntele (X,Y) în
coordonatele ecranului, respectiv între (0,0), colţul din stânga jos şi (1,1) ,colţul din
dreapta sus al ecranului.
Plasarea unui şir de caractere (text sau comentariu) în cânpul grafic cu
mouse-ul se realizează[ utilizând funcţia gtext, apelată cu sintaxa:
gtext('textul').
Funcţia gtext afişează şirul de caractere 'textul' în fereastra grafică şi aşteaptă
deplasarea acestuia pe grafic cu mouse-ul. Apăsând un buton al mouse-ului sau
orice tastă, textul se scrie pe grafic la poziţia selectată.
Pentru a transforma un şir de caractere într-o expresie TeX, se utilizează
funcţia texlabel, putând fi apelată cu sintaxa texlabel('expresie') pentru a
transforma expresia 'expresie' în echivalent TeX pentru aplicaţii Matlab, sau
texlabel('expresie','literal') pentru a transforma expresia 'expresie' în formă literală.
De exemplu, comanda:
texlabel('sin(sqrt(x^2 + y^2))/sqrt(x^2 + y^2)')
368 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE

returnează,
{sin}({sqrt}({x}^{2} + {y}^{2}))/{sqrt}({x}^{2} + {y}^{2})
comanda,
texlabel('lambda12^(3/2)/pi - pi*delta^(2/3)','literal')
returnează,
{lambda12}^{{3}/{2}}/{pi} - {pi} {delta}^{{2}/{3}}

17.3. Funcţii utilitare pentru scriere


Pentru utilizator sunt posibile următoarele utilitare:
• doclick – manipularea obiectelor de proces cu ButtonDown;
• dokeypress – funcţii pentru manipularea cheilor;
• domymenu – manipularea conţinutului meniului;
• doresize – cheamă funcţia pentru figurile obiect;
• getobj – recheamă pentru manipulare obiectul scris;
• enddrag, middrag, prepdrag, putdowntext, scribeclearmode,
scribeeventhandler, scriberestoresavefcns – funcţii help pentru editorul
de plotare;
• scribeaxesdlg – funcţia de help dialog a proprietăţilor axelor;
• scribelinedlg - funcţia de help dialog a proprietăţilor liniei;
• scribetextdlg – editarea proprietăţilor text şi font în editorul de plotare.

17.4. Grafice 2D specializate


Reprezentarea grafică, sub formă de bare verticale, se realizează cu funcţia
bar, care se poate apela cu sintaxa:
• bar(x,y,gros) – reprezintă grafic y, în funcţie de x, cu grosimea barei date
de gros, care poate lipsi şi atunci, valoarea implicită este gros=0.8; dacă
gros<0.8 barele au grosimea de 0.2, iar dacă gros>1 atunci barele se unesc,
ca în figura 17.11 şi figura 17.12 mijloc;
• bar(x,y, 'grouped') – reprezintă barele grupate pe seturi de date şi cu
aceeaşi culoare, ca în figura 17.12 superior;
• bar(x,y, 'stacked') – reprezintă barele secţionate cu culori diferite pentru
seturile de date, ca în figura 17.12 inferior.
De menţionat că valorile lui x trebuie să fie egal depărtate şi crescătoare.
Figura 17.12 a fost realizată cu secvenţa:
subplot(3,1,1), bar(rand(10,5),'stacked'), colormap(cool);
subplot(3,1,2), bar(0:.25:1,rand(5),1);
Reprezentări grafice în doua dimensiuni 369
369

subplot(3,1,3), bar(rand(2,3),.75,'grouped').

Fig.17.11. Reprezentarea bar cu grosimi diferite

Fig.17.12. Reprezentarea bar grupat şi secţionat

Apelată cu secvenţa,
[xb,yb]=bar(y) sau [xb,yb]=bar(x,y)
370 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE

funcţia bar nu reprezintă graficele, dar calculează vectorii xb şi yb, astfel încât
plot(xb,yb) să poată trasa graficul de bare. Aceasta este utilă când se doreşte un
control mai mare asupra graficului.
Reprezentarea barelor orizontale se realizează cu funcţia barh, care este
asemănătoare funcţiei bar. Pentru exemplificare, se consideră secvenţa anterioară
în care se înlocuieşte bar cu barh, reprezentată în fiura.17.13:
subplot(3,1,1), barh(rand(10,5),'stacked'), colormap(cool);
subplot(3,1,2), barh(0:.25:1,rand(5),1);
subplot(3,1,3), barh(rand(2,3),.75,'grouped').

Fig.17.13. Representarea barh grupat şi secţionat

Pentru plotarea ariei de sub curbă se poate utiliza funcţia area, care se
apelează cu secvenţa area(x,y) şi este asemănătoare cu plot(x,y), cu deosebirea că
aria de sub curbă este colorată, între 0 şi y.
Apelată cu area(y) consideră implicit că x=1:size(y,1).
Specificarea nivelului de la care se colorează aria se face prin level, care
poate fi 0 (valoare implicită) sau o valoare precizată, caz în care colorarea se face
între level şi valoarea curentă a lui y, ca în figura 17.14, realizată cu secvenţa:
x=1:10;y=x.^2;area(x,y,50).
Pentru reprezentarea dinamică (în mişcare) a traiectoriei unui punct, care
urmăreşte reprezentarea grafică 2D (o „cometă”), se utilizează funcţia comet, care
Reprezentări grafice în doua dimensiuni 371
371

se apelează cu una dintre sintaxele:


• comet(y) – care trasează în mişcare (animat) vectorul y;
• comet(x,y) – care trasează în mişcare vectorul y funcţie de x;
• comet(x,y,p) – care trasează în mişcare vectorul y funcţie de x, utilizând
pentru animare (întârzierea în plotare) timpul dat de p*length(y).
Pentru exemplificare se recomandă secvenţa:
t = -pi:pi/200:pi;
comet(t,tan(sin(t))-sin(tan(t))).

Fig.17.14. Reprezentarea funcţiei area cu level

Evidenţierea erorilor datelor reprezentate grafic se poate face cu funcţia


errorbar, apelată cu sintaxa: errorbar(x,y,e).
Reprezentarea grafică a datelor cu bare de eroare ataşează fiecărei perechi
(x,y) eroarea precizată într-un vector, e, cu aceleaşi dimensiuni. Vectorul e conţine
lungimea barelor ce reprezintă eroarea.
Barele de erori se reprezintă simetric în raport cu ordonata y, ceea ce
presupune o asociere de erori pozitive sau negative, cu aceeaşi probabilitate.
Segmentele de eroare sunt de înălţime 2*e şi se trasează pe curba y=y(x). Figura
obţinută reprezintă plaja de valori pe care o poate lua funcţia y cu eroarea ”e”.
Dacă x şi y sunt matrice de aceeaşi dimensiune, funcţia errorbar va
reprezenta graficul cu bare de eroare, pentru fiecare coloană în parte.
Un exemplu de reprezentare grafică a funcţiei errorbar este prezentat în
figura 17.15, realizată cu secvenţa:
x = 1:10; y = sin(x); e = std(y)*ones(size(x)); errorbar(x,y,e).
372 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE

Fig.17.15. Reprezentare grafică cu funcţia errorbar

Pentru plotarea facilă a unei expresii introduse direct ca argument (de genul
funcţiei humps) se face uşor cu funcţia ezplot, care se poate apela:
• ezplot(f), ca de exemplu ezplot('cos(x)'), care consideră implicit pentru x
din f=f(x), domeniul 2*pi < x < 2*pi;
• ezplot(f, [xmin,xmax,ymin,ymax]), care plotează f(x,y)=0 pe domeniul
xmin < x < xmax, ymin < y < ymax;
• ezplot(f), ca de exemplu ezplot('x^2 - y^2 - 1'), care plotează f(x,y)=0 şi în
care -2*pi < x < 2*pi şi -2*pi < y < 2*pi, reprezentată în figura 17.16;
• ezplot('f',[a b]), ca de exemplu ezplot('x^3 + y^3 - 5*x*y + 1/5',[-3,3]),
care plotează f(x,y)=0 şi în care a=-3 < x < b=3 şi a=-3 < y < b=3;
De menţionat că, funcţia f poate fi definită şi anterior prin secvenţa:
f = inline('cos(x)+2*sin(x)'),
caz în care funcţia ezplot se poate apela cu una dintre secvenţele,
ezplot(f);
ezplot(@humps).
Plotarea facilă în coordonate polare a unei funcţii introduse ca argument,
respectiv a curbei rho = f(theta), pe domeniul implicit 0 < theta < 2*pi, se face prin
apelarea funcţiei ezplot, sub forma:
ezplot(f)
sau,
ezplot(f,[a,b] în care a < theta < b.
Reprezentări grafice în doua dimensiuni 373
373

Fig.17.16. Reprezentarea grafică cu ezplot

Funcţia f poate fi definită ca o expresie utilizând @ (funcţie humps) sau ca o


funcţie inline, ca de exemplu:
ezpolar('1 + cos(t)')
ezpolar('cos(2*t)')
ezpolar('sin(tan(t))')
ezpolar('sin(3*t)')
ezpolar('cos(5*t)')
ezpolar('sin(2*t)*cos(3*t)',[0,pi])
ezpolar('1 + 2*sin(t/2)')
ezpolar('1 - 2*sin(3*t)')
ezpolar('sin(t)/t', [-6*pi,6*pi])
r = '100/(100+(t-1/2*pi)^8)*(2-sin(7*t)-1/2*cos(30*t))';
ezpolar(r,[-pi/2,3*pi/2])
h = inline('log(gamma(x+1))');
ezpolar(h)
ezpolar(@cot,[0,pi])
Reprezentarea grafică a funcţiei ezpolar('1 - 2*sin(3*t)'), este prezentată în
figura 17.17.
Reprezentarea grafică a unor vectori cu originea în originea sistemului de
coordonate polare se face cu funcţia compass, care se apelează cu una din
sintaxele:
compass(z), compass(real(z),imag(z)), sau compass(x,y),
374 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE

unde z este numărul complex z=x+i*y, iar x şi y sunt numere reale care sunt
proiecţia vectorului z pe abscisă şi ordonată.

Fig.17.17. Reprezentarea grafică cu ezpolar


Dacă z=[3-4*i -3+2*i 5+7*i], atunci cu compass(z) se obţine reprezentarea
din figura 17.18, iar pentru x=[1 2 4]; y=[-4 5 -2], funcţia compass(x,y) este redată
în figura 17.19.

Fig.17.18. Reprezentarea grafică cu compass a lui z - complex


Reprezentări grafice în doua dimensiuni 375
375

Fig.17.19. Reprezentarea grafică cu compass a vectorilor x, y

Pentru reprezentarea grafică în coordonate 2D rectangulare a vectorilor se


utilizează funcţia feather, care se apelează ca şi funcţia compass, respectiv:
feather(z) sau feather(x,y).
Reprezentarea aceloraşi vectori z şi x, y cu funcţia feather este redată în
figura 17.20 şi respectiv figura 17.21.

Fig.17.20. Reprezentarea grafică cu feather a lui z – complex


376 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE

Fig.17.21. Reprezentarea grafică cu feather a vectorilor x, y

Fig.17.22. Reprezentarea poligoanelor cu funcţia plot

Fig.17.23. Reprezentarea poligoanelor cu funcţia fill


Reprezentări grafice în doua dimensiuni 377
377

Pentru reprezentarea grafică a poligoanelor se utilizează funcţia fill, care se


apelează cu sintaxa generală fill(x,y,c), care reprezintă un poligon definit de
vectorii x şi y, cu nuanţele de culoare c. Coordonatele vârfurilor poligonului sunt
specificate prin perechile (x,y). Dacă se consideră necesar, poligonul se poate
închide, conectând valorile finale la cele iniţiale.
Dacă argumentul c este un singur caracter dintre cele prezentate în lista de
culori din tabelul 17.1 sau un vector cu trei componente [r g b], poligonul va fi
colorat într-o singură culoare. În cazul în care c este un vector cu aceeaşi
dimensiune ca x şi y, elementele acestuia sunt scalate cu funcţia caxis şi apoi
utilizate ca indici într-o matrice care specifică culorile vârfurilor. Culorile dintre
vârfuri sunt obţinute prin interpolare biliniară a culorilor vârfurilor.
Dacă x şi y sunt matrice cu aceeaşi dimensiune, fill(x,y,c) reprezintă câte un
poligon pentru fiecare coloană. În acest caz, c este un vector linie pentru poligoane
cu o singură culoare şi, respectiv, o matrice pentru poligoane cu culori interpolate.
Dacă numai unul dintre argumentele x sau y este matrice, celălalt fiind vector
coloană cu acelaşi număr de linii, vectorul coloană se va extinde la o matrice cu
aceleaşi dimensiuni, prin adăugarea unor coloane identice.
Pentru specificarea poligoanelor multiple, se poate utiliza şi forma
fill(x1,y1,c1,x2,y2,c2,…), care este mult mai uşor de controlat.
Funcţia fill setează proprietăţile FaceColor a funcţiei patch (care creează
module obiect) la „flat” (aceeaşi culoare), „interp” (culori interpolate) sau
ColorSpec (culoarea specificată), funcţie de valorile matricei c.
Funcţia fill returnează un vector coloană al identificatorilor de control al
caracteristicilor modulelor obiect, câte o linie pentru fiecare modul. Argumentele
x,y,c pot fi urmate de perechi parametru-valoare, pentru a specifica proprietăţile
suplimentare ale modulului obiect.
Pentru a evidenţia diferenţa dintre plot şi fill se consideră poligoanele:
x1=[0 2 3 -1 0];y1=[-1 0 3 2 -1]; x2=[2 3 5 4 2]; y2=[0 3 2 0 0];
care, reprezentate cu plot, sunt prezentate în figura 17.22, iar reprezentate cu fill
sunt redate în figura 17.23, din care reiese că funcţia fill umple poligoanele cu
culoarea specificată.

Reprezentarea grafică cu parametrii impuşi se realizează cu funcţia fplot.


Funcţia fplot realizează o reprezentare grafică cu anumite restricţii şi se apelează
cu una dintre sintaxele:
fplot('fun', limite) fplot('fun', limite, tol)
fplot('fun', limite, n) fplot('fun', limite, n, unghi)
fplot('fun', limite, n, unghi,subdiviz) [x,y]=fplot('fun', limite, …)
unde:
fun - numele fişierului funcţie (şir de caractere), care poate fi dată sub forma
unei funcţii linie obiect, cu @ sau expresie;
limite = [xmin xmax] – limitele axei x pentru care se doreşte reprezentarea
grafică;
tol – eroarea tolerată la reprezentare, care, dacă lipseşte, are valoarea
378 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE

implicită 2e-3, respectiv de 0.2 procente;


n – numărul de eşantioane cu care este reprezentată funcţia
(implicit n=25);
unghi – cea mai mare schimbare de unghi dintre două segmente
adiacente ale graficului (implicit 10°);
x, y - vectori coloană în care sunt returnate valorile abscisei şi ale
ordonatei funcţiei.
Dacă funcţia fplot se apelează cu argumente de ieşire, nu se reprezintă nici
un grafic, dar acesta se poate trasa ulterior apelând funcţia plot(x,y).
Un exemplu de utilizare este:
subplot(2,2,1), fplot(@humps,[0 1])
f = inline('abs(exp(-j*x*(0:9))*ones(10,1))');
subplot(2,2,2), fplot(f,[0 2*pi])
subplot(2,2,3), fplot('[tan(x),sin(x),cos(x)]',2*pi*[-1 1 -1 1])
subplot(2,2,4), fplot('sin(1 ./ x)', [0.01 0.1],1e-3)
prezentat în figura 17.24.

Fig.17.24. Reprezentări cu funcţia fplot

Calculul şi reprezentarea grafică a histogramelor se face cu funcţia hist,


care se apelează cu una dintre sintaxele:
• hist(y) – trasează histograma cu 10 segmente egale a datelor vectorului y;
• hist(y, n) – trasează histograma cu n segmente egale a datelor vectorului y;
• hist(y, x) – trasează histograma datelor vectorului y la abscisele specificate
Reprezentări grafice în doua dimensiuni 379
379

în x;
• [m,z]=hist(y), [m,z]=hist(y, n), [m,z]=hist(y, x) – returnează vectorii m şi
z conţinând frecvenţa de apariţie şi de localizare a segmentelor, apoi cu
funcţia bar(z,m) se poate trasa histograma, dând o mai mare flexibilitate
reprezentărilor grafice şi realizând grafice mai sugestive.
Un exemplu de histogramă este cel din figura 17.25, care reprezintă un vector
cu elementele distribuite normal (Gaussian), obţinut cu secvenţa:
x=-4:0.4:4; y=randn(10000,1); hist(y,x).

Fig.17.25. Reprezentarea grafică a unei histograme


Reprezentarea unei histograme în coordonate polare se face cu funcţia rose,
care se apelează:
• rose(x) – unde x trebuie să fie cuprins în intervalul [0, 2π];
• rose(x,N) – în care n, este numărul de subintervale în care se împarte
intervalul [0, 2π], cu valoarea implicită N=20;
• [t,r] =rose(x,N) – care returnează vectorii t şi r, ce pot fi folosiţi pentru
reprezentarea unei histograme polare, cu funcţia polar(t,r).
Pentru exemplificare, se prezintă în figura 17.26 histograma a 200 numere
aleatoare, în coordonate polare, obţinută din:
x=2*pi*rand(200,1); rose(x,10).
De menţionat că în ultimele revizii ale Matlab s-a renuntat la funcţia rose ca
şi la funcţia compass, acestea fiind înlocuite.
380 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE

Fig.17.26. Reprezentarea grafică a unei histograme polare


Reprezentarea grafică a semnalelor discrete, sub forma unor linii terminate
cu cerc, se face cu funcţia stem, care se apelează cu una dintre sintaxele:
• stem(y) – trasează un grafic din linii cu cerc, cu elementele vectorului y;
• stem(x,y) – trasează un grafic din linii terminate cu cerc, cu locaţiile
specificate de vectorul x, adică y=y(x), iar valorile lui x trebuie să fie egal
depărtate şi crescătoare;
• stem(x,y,linie_tip) – trasează un grafic linii de tipul şi culoarea precizată în
şirul de caractere linie_tip, similar cu funcţia plot (de exemplu
stem(x,y,’:r’).
Un exemplu de reprezentare grafică cu funcţia stem este redat în figura
17.27, pentru funcţia discretă sinus, obţinut cu secvenţa Matlab:
n=0:30; f=sin(2*pi*n/10); stim(n,f).

Fig.17.27. Reprezentarea grafică cu funcţia stem


Reprezentări grafice în doua dimensiuni 381
381

Reprezentarea grafică în trepte se realizează cu funcţia stairs. Graficele în


trepte sunt utilizate la reprezentarea diagramelor sistemelor numerice de
eşantionare şi prelucrare a datelor.
Funcţia stairs se apelează cu una dintre sintaxele:
• stairs(y) – trasează graficul în trepte al vectorului y;
• stairs(x,y) – trasează graficul în trepte al elementelor vectorului y la
locaţiile specificate în x, iar valorile lui x trebuie să fie egal departate şi în
ordine crescătoare;
• [xb,yb]=stairs(y) şi [xb,yb]=stairs(x,y) – calculează vectorii xb şi yb,
astfel încât plot(xb,yb) să poată trasa graficul în trepte.
Un exemplu de grafic în trepte al funcţiei y=sin(x), obţinut cu secvenţa:
x=0:0.3:6; y=sin(x); stairs(x,y)
este redat în figura 17.28.

Fig.17.28 Reprezentarea grafică cu funcţia stairs


Realizarea unei diagrame sub formă de bare, punând în ordine
descrescătoare vectorii y, se poate face apelând funcţia pareto(y) sau pareto(y,x),
în care y sunt valorile corespunzătoare fiecarui x.
Înălţimea barelor corespunde valorilor lui y, ordonata din stânga graficului
are înălţimea cât sum(y), iar cea din dreapta dă valoarea procentuală y/sum(y),
după cum se observă din figura 17.29. Curba continuă trasează diferenţa, valoarea
sumei şi valoarea fiecărei valori a lui y.
Realizarea unei diagrame circulare (aşa numita diagramă „plăcintă”) cu
valorile unui vector x, având specificată semnificaţia în etichetă, se face cu funcţia
pie(x,eticheta), care se poate apela pie([2 4 3 5],{'North','South','East','West'}),
dând diagrama din figura 17.30.
De menţionat că valorile lui x sunt normalizate, iar dacă sum(x)<1, atunci
sunt trecute valorile efective şi apare un segment de cerc.
382 SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE

Fig.17.29. Reprezentarea grafică cu funcţia pareto

Fig.17.30. Reprezentarea grafică cu funcţia pie


Plotarea unei matrice dispersate se face cu funcţia plotmatrix. Se apelează
cu comanda plotmatrix(x,y) şi prezintă dispersia coloanei x funcţie de coloana y.
Dacă x este o matrice p*m, iar y o matrice p*n, atunci plotmatrix produce o
matrice n*m. Comanda plotmatrix(y) este asemănătoare cu comanda
plotmatrix(y,y), cu excepţia faptului că diagonala este înlocuită prin hist(y(:,i)).
Un exemplu de utilizare este redat in figura 17.31, realizat cu comenzile:
x = randn(50,3); y = x*[-1 2 1;2 0 1;1 -2 3;]';
plotmatrix(y).
Plotarea dispersiei vectorului x, funcţie de vectorul y (x şi y având aceeaşi
dimensiune), cu markere (cerculeţe implicit) de arie determinată de valorile
vectorului s (în puncte^2) şi fiecare punct colorat, conform valorilor vectorului c,
se face cu scatter(x,y,s,c). Dacă s este scalar, atunci fiecare marker va avea aceeşi
dimensiune.
Reprezentări grafice în doua dimensiuni 383
383

Fig.17.31. Reprezentarea grafică cu funcţia plotmatrix


Considerând valorile negative ale magnetismului z(m) la nivel planetar,
funcţie de latitudinea x (grade) şi longitudinea y (grade), date de Parker, R. L.,
Shure, L. & Hildebrand, J., "The application of inverse theory to seamount
magnetism", Reviews of Geophysics vol 25, pp 17-40, 1987, diagrama de variaţie
realizată cu:
load seamount ;
scatter(x,y,5,z)
este prezentată în figura 17.32.

Fig.17.32. Reprezentarea grafică cu funcţia scatter

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