delete a subplot and renew plot

조회 수: 10 (최근 30일)
karlo gonzales
karlo gonzales 2014년 6월 16일
댓글: dpb 2014년 6월 17일
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
karlo gonzales
karlo gonzales 2014년 6월 17일
Indeed, i don't have any more over-plotting box or axes with above-mentioned code
what i wanted to do was; open a figure+ several subplots at specific positions and update graphs in a for- loop.
dpb
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
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
  댓글 수: 1
karlo gonzales
karlo gonzales 2014년 6월 16일
thanks Kevin for your smart solution

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Subplots에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by