Mihai Sprinceana
Un forum de programare cu de toate. Va astept sa va inscrieti si sa deveniti moderatori. Oricine este binevenit aici sa se inscrie si sa aiba acces la informatie free! Fiecare este liber sa adauge proiecte programe free etc. Ajutati acest forum sa devina o comunitate puternica unde fiecare invata de la fiecare! Tot ce trebuie sa faceti este sa va inregistrati si fiecare contributie se poate dovedi utila in timp! Forumul este free informatia free dk aveti timp liber ajutati si pe ceilalti si invatati si voi in acelasi timp! Haideti sa facem ceva pt.a ne ajuta intre noi! Cititi regulament postare forum inainte de a posta!
Lista Forumurilor Pe Tematici
Mihai Sprinceana | Inregistrare | Login

POZE MIHAI SPRINCEANA

Nu sunteti logat.
Nou pe simpatie:
Elena01
Femeie
19 ani
Braila
cauta Barbat
19 - 31 ani
Mihai Sprinceana / Matlab / Folosirea comenzii plot si handler pentru o componenta gui (axes) Moderat de andreeamp, fireratbat, profu.info, sade5000
Autor
Mesaj Pagini: 1
mihaispr
Administrator

Inregistrat: acum 17 ani
Postari: 2142
Din documentatie:


plot(axes_handle,...) plots into the axes with handle axes_handle instead of the current axes

Dorim sa folosim aceasta functie pt. a trasa un anumit figure pe un axes_handle specific.

In acest tutorial vom folosi functia plot pentru un axes_handle specific.


Exemplul 1:


fig=figure();
axes_handle=axes('Parent',fig,'Position',[0 0.5 0.5 0.5]); % setam pozitia figure-ului

x=linspace(0,10,100);
plot(axes_handle,x,sin(x));



Daca trasam un figure cu toate proprietatile axes setate daca dorim sa facem un plot al altei figure pe axes-urile care le avem cu aceleasi proprietati.

Putem folosi deci axes_handle pt a face un plot la al doilea figure.


Codul sursa este listat mai jos






fig=figure(1);
x=-20:20;
y=x.^2;
plot(x,y)
set(gca,'xtick',-20:2:20); % facem un pas de 2 pt. fiecare tick al axei Ox
set(gca,'xcolor',[0 0 1]); % schimbam culoarea axis-ul cu functiile set si gca
axesource = gca;


% axes_handle=gca; % % intoarce acelasi axe nu o copie a  ei

newfig=figure(2);
clf(newfig);
% statement ce copiaza celalalt axes la cel nou
axes_handle = copyobj(axesource,newfig); % graficele sunt deasemenea copiate folosind functia copyobj
hold(axes_handle,'on'); % nu trebuie sa stearga graficele in moment trasarii graficului ( in momentul plotting-ului)
z=x.^3;
plot(axes_handle,x,z,'r')







Daca dorim ca graficul din prima figura deci figure(1) sa apara in noua figura newfig. Dorim sa copiem doar detaliile pt. noua figura newfig. Pentru aceasta:


fig=figure(1);
clf(fig)
x=-20:20;
y=x.^2;
plot(x,y)
set(gca,'xtick',-20:2:20); % facem pas de 2 pt. fiecare tick al axei Ox
set(gca,'xcolor',[0 0 1]); % schimbam culoarea axei Ox cu functiile set si gca (get current axes)
axesource = gca;


% statement ce copiaza celalalt axes la cel nou
axes_handle = copyobj(axesource,fig); % % graficele sunt deasemenea copiate folosind functia copyobj
hold(axes_handle,'on'); % nu trebuie sa stearga graficele in moment trasarii graficului ( in momentul plotting-ului)
set(axes_handle,'Yaxis','right') % pune noul axis al nolui axes la dreapta cu optiunea right
z=x.^3;
plot(axes_handle,x,z,'r')


Acum nu mai avem un second plot ci acelasi plot ca si primul. Fiecare obiect grafic este referit de un unic identificator (id) numit HANDLE acelasi lucru e valabil si vice-versa pentru HANDLE valid avem un unic obiect grafic. Daca copiem handle-ul se va referi la acelasi obiect grafic (aici este un axe). Deci nu este neaparat nevoie sa copiem handle-ul catre o noua variabila.

Functia copyobj copiaza obiectul specificat (un axe in acest caz) la un nou axe si intoarce noul handler asociat. Dupa apelarea copyobj matlab va avea acum 2 obiecte grafice separate (2 obiecte axes).

Se pot adauga mai multe reprezentari grafice (plots) la acelasi axe folosind comanda HOLD ON. Nu este nevoie deci sa cream multe axes-uri ca nr. de plots (nr. de reprezentari care il dorim sa-l trasam). Este suficient sa scriem hold on dupa fiecare reprezentare grafica trasata (plot).


pus acum 15 ani
   
Pagini: 1  

Mergi la