delete a subplot and renew plot
이전 댓글 표시
Hi guys,
i am trying to update my subplot in a for loop, like;
fig1=figure;
for i=1:10
axes1 = axes('Parent',fig1, 'Position',[0.043 0.77 0.43 0.15]); box(axes1,'on'); hold(axes1,'all');
plot(rand(1,100),'Parent',axes1)
end
it works! and for each run i have a new graph. BUT, it has one problem; overlapping subplot box.
what should i do, to avoid this overlapping
댓글 수: 5
dpb
2014년 6월 16일
What, precisely, do you want? Obviously when you use a fixed 'Position' vector you're going to get an axes object in the same position.
Plus, each loop creates a new axes but overwrites the handle of the previous. So, at the end of the above loop you have 10 active axes but no way w/o "handle-diving" to access any but the last.
Why aren't you just using subplot?
karlo gonzales
2014년 6월 16일
dpb
2014년 6월 17일
for i=1:10
subplot1= subplot(4,2,1,'Parent',fig1,...
That doesn't solve any of your problems; you still have 10 subplot() axes and only one handle.
Again, what are you really trying to do???
karlo gonzales
2014년 6월 17일
dpb
2014년 6월 17일
Actually, the one problem of multiple handles does go away with subplot for overlapping calls--it has the smarts internally to make the existing the current--but so does just the syntax
subplot(N,M,i)
It would still be much simpler to retain the handle that corresponds to each when creating them (or not save any handles at all) rather than have the same variable refer to a bunch of different axes depending...
As for updating once you've created an axes object, the use of set for [x|y]data is far more efficient as Kevin noted.
답변 (1개)
Kevin Claytor
2014년 6월 16일
Better yet, update using handles:
figure;
f = 2*pi;
x = linspace(1,100);
y = sin(x/f);
subplot(2,2,1)
plot(x,y);
title('Initial')
subplot(2,2,4);
title('Over Time')
h = plot(x,y);
for ii = 1:1000
newy = sin(1/f*(x - ii/pi));
% update using the handle to the graphics object
set(h,'ydata',newy);
pause(.1)
end
카테고리
도움말 센터 및 File Exchange에서 Subplots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!