2013-08-28 13 views
5

Użyłem polecenia fabuły, aby narysować rysunek, a następnie zmieniono wiele jego właściwości za pomocą polecenia set. Przechowuję również uchwyt działki (powiedzmy h1).Wykreślanie istniejącej działki MATLAB na inną figurę

Potrzebuję użyć uchwytu, aby wykreślić tę samą figurę ponownie w moim kodzie. Sprawdziłem polecenie plotowania i nie znalazłem żadnej wersji, która akceptuje uchwyt. Myślałem także o tym, aby uzyskać Xdata i Ydata i użyć ich do ponownego spiskowania tej samej postaci.

Jakie jest najprostsze rozwiązanie?

Edytuj 1: działający kod przykładowy oparty na copyobj, który zasugerował PeterM.

hf(1) = figure(1); 
plot(peaks); 

hf(2) = figure(2); 
plot(membrane); 

hf(3) = figure(3); 
ha(1) = subplot(1,2,1); 
ha(2) = subplot(1,2,2); 

for i = 1:2 
    hc = get(hf(i),'children'); 
    hgc = get(hc, 'children'); 
    copyobj(hgc,ha(i)); 
end 

Edycja 2: również this function które można skopiować dane (w tym legenda) na poletko.

Odpowiedz

5

Już wcześniej wpadłem na tę sytuację. W zależności od tego, co próbujesz zrobić, może być odpowiednia funkcja copyobj. Ta funkcja pozwala ci wziąć zawartość jednej osi i skopiować ją do nowej postaci.

2

Można użyć saveas, aby zapisać figurę w pliku, a open załadować dokładnie tę samą liczbę z tego pliku.

3

Poprawa @PeterM miłą odpowiedź, jeden łatwiejszy sposób byłoby:

fig2H=copy(gcf) % or change gcf to your figure handle 

Ale to zależy od tego, co chcesz, jeśli chcesz tylko osie lub postać otworu ...

Btw, to wydaje się nie kopiować uchwyt legendy, przynajmniej nie na HG2

0

To byłby najbardziej leniwy sposób, aby osiągnąć to, co chcesz.

% Sample plot 
f1 = figure(1); 
plot(0:0.1:2*pi, sin(0:0.1:2*pi)); 
f2 = figure(2); 

% The code you need 
saveas(f1, 'temp.fig') 
f2 = hgload('temp.fig') 
delete('temp.fig') 
Powiązane problemy