网络示例显示了如何在单个图中制作动画情节。
但是,我想在一个图中做两个子图,这样他们就会在第一个子图中显示动画,然后在第二个子图中显示动画。
使用'figure(1)'
或'figure (2)'
和'hold on'
,我可以按如下方式制作动画图。但是,如何调用子图来执行类似的操作?
所以我要找的效果是:1)打开的数字,有两个子图。 2)在第一个子图中绘制动画曲线,然后在第二个子图中绘制动画曲线。 3)我想回到第一个子情节来绘制更多的东西,并且还要去第二个子情节来绘制更多的东西。
figure(1); hold on; x = 1:1000;
y = x.^2;
%// Plot starts here
figure,hold on
%// Set x and y limits of the plot
xlim([min(x(:)) max(x(:))])
ylim([min(y(:)) max(y(:))])
%// Plot point by point
for k = 1:numel(x)
plot(x(k),y(k),'-') %// Choose your own marker here
%// MATLAB pauses for 0.001 sec before moving on to execue the next
%%// instruction and thus creating animation effect
pause(0.001);
end
答案 0 :(得分:2)
只需在循环中执行subplot
:
for k = 1:numel(x)
subplot(1,2,1)
plot(x(k),y(k),'-') %// Choose your own marker here
subplot(1,2,2)
plot(x(1:k),y(1:k))
%// MATLAB pauses for 0.001 sec before moving on to execue the next
%%// instruction and thus creating animation effect
pause(0.001);
end
答案 1 :(得分:1)
% Easiest way
x = rand(1, 11); y = rand(1, 11);
z = rand(1, 11); a = rand(1, 11);
figure
for i = 1 : 10
subplot(211)
plot(x(i : i+1), y(i : i+1), '.-k');
hold on; % include this if you want to show plot history
subplot(212)
plot(z(i : i+1), a(i : i+1), '.-k');
drawnow;
pause(0.1);
end
% If you don't want to call "plot" interatively
x = rand(1, 11); y = rand(1, 11);
z = rand(1, 11); a = rand(1, 11);
figure
subplot(211)
p1 = plot(NaN, NaN, 'marker', 'o');
subplot(212)
p2 = plot(NaN, NaN, 'marker', 'd');
for i = 1 : 10
set(p1, 'xdata', x(i : i+1), 'ydata', y(i : i+1));
set(p2, 'xdata', z(i : i+1), 'ydata', a(i : i+1));
drawnow;
pause(0.1);
end
答案 2 :(得分:0)
首先将情节定义为构造,因此p1 = plot(x,y)
。然后设置循环并在循环中进行写
set(p1,'YData',y);
这将更新图p1
的YData y
。如果要以动画形式查看它,只需在pause(0.1) %seconds
之后添加set
。