如何在循环内绘制数据的同时避免MATLAB弹出带有两个轴的GUI图f
。
这是一个简单的例子:
f=figure;
ax.h1 = axes('Parent',f,'Position',[0.1 0.1 0.8 0.35],'Units','normalized');
ax.h2 = axes('Parent',f,'Position',[0.1 0.6 0.8 0.35],'Units','normalized');
for j=1:20
axes(ax.h1)
hold on
plot(1:3,(1:3)+j)
axes(ax.h2)
hold on
plot(1:3,(1:3)+1+j)
pause(2)
end
我需要持续绘制数小时的数据。因此,如果每次生成新绘图时MATLAB都没有弹出,那就太棒了。
谢谢!
答案 0 :(得分:2)
正如@TasosPapastylianou所说,axis
电话正在将窗口带到前面。移除循环内的axis
和hold on
调用,并使用plot(ax.h1, ...
绘制到特定轴。您只需为每个轴调用hold on
一次,因此请在开始时使用hold(ax.h1, 'on')
等进行此操作。然后,您的图表应在后台继续更新,而不是每次都在前面。
你的例子变成了:
f=figure;
ax.h1 = axes('Parent',f,'Position',[0.1 0.1 0.8 0.35],'Units','normalized');
ax.h2 = axes('Parent',f,'Position',[0.1 0.6 0.8 0.35],'Units','normalized');
hold(ax.h1, 'on')
hold(ax.h2, 'on')
for j=1:20
plot(ax.h1, 1:3,(1:3)+j)
plot(ax.h2, 1:3,(1:3)+1+j)
pause(2)
end