循环子图

时间:2013-11-11 10:25:08

标签: matlab

不知何故,标题,xlabel,ylabel,ylim和xlim在下面的脚本中没有固定,我该如何解决?

    x = 0:0.01:1;

figure
p1 = subplot(2,1,1);
xlabel(p1, '$x$','Interpreter','LaTex', 'Fontsize', 16);
ylabel(p1, '$\sin(x+t)$','Interpreter','LaTex', 'Fontsize', 16);
title(p1, 'Sine','Interpreter','LaTex', 'Fontsize', 20);
ylim(p1, [-1 2]) 
xlim(p1, [0 1]) 

p2 = subplot(2,1,2);
xlabel(p2, '$x$','Interpreter','LaTex', 'Fontsize', 16);
ylabel(p2, '$\cos(x+t)$','Interpreter','LaTex', 'Fontsize', 16);
title(p2, 'Cosine','Interpreter','LaTex', 'Fontsize', 20);
ylim(p2, [-2 1])
xlim(p2, [0 1]) 

for t = 0:0.1:2
    plot(p1, x, sin(x+t))      
    plot(p2, x, cos(x+t))
    pause(0.1)
end

1 个答案:

答案 0 :(得分:1)

默认情况下,由于您没有hold onhold all,因此当您在循环中重新绘制时,所有内容都会重置。由于您只想更改每个图表中的一组值,因此您可以使用set而不是plot来解决此问题。

首先,在调用每个子图后,绘制初始图并为其设置句柄:

p1 = subplot(2,1,1);
h1 = plot(p1,x,sin(x);

然后继续设置标签等,就像你已经做的那样。

在循环中,替换现有图表中的数据:

for t = 0.1:0.1:2
    set(h1,'Ydata',sin(x+t))      
    set(h2,'Ydata',cos(x+t)) 
    pause(0.1)
end