matlab:我如何在两个子图的图中做动画图

时间:2014-11-26 01:20:28

标签: matlab animation plot

网络示例显示了如何在单个图中制作动画情节。

但是,我想在一个图中做两个子图,这样他们就会在第一个子图中显示动画,然后在第二个子图中显示动画。

使用'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

3 个答案:

答案 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