将图设置为不是下一个图的目标

时间:2017-05-25 15:55:48

标签: matlab matlab-figure

我正在使用一些图表处理自定义进度监视器。我注意到Matlab的waitbar创建了一个带有一些特殊属性的数字,这样如果你做了

plot(rand(100,1));
wb = waitbar(0);
plot(rand(100,1));

第二个图最终取代了第一个图而不是wb是否有我可以设置的属性,以便在我创建进度监视器然后事后绘制内容时,图形不会在我的图中结束?

要清楚,我试图

plot(rand(100,1));
temp = MyProgressBar();
plot(rand(100,1));

为第一个图创建一个图,在第二行中创建一个不同的图,然后在第三行中绘制一个新图。

1 个答案:

答案 0 :(得分:3)

为了保护您的进度条形图以防止后续的绘图操作,我会将其'HandleVisibility' property的轴设置为'off'。这应该可以防止它成为当前的轴,从而保持后续的绘图命令不被修改或添加到它。对于独立的图形/ GUI来说,这是一个很好的做法,你可以通过这种方式关闭所有对象(图,uicontrols等)的句柄可见性,以防止被外部代码修改。这几乎可以肯定是waitbar的代码所做的。

另外,最好通过passing the axes handle as the first argument将您的绘图定位到给定的轴。您还必须确保,如果您希望将新图添加到现有图中,则首先使用hold命令之类的内容。这是我如何重做你的例子,假设你想让两个图出现在同一个轴上:

plot(rand(100,1));  % Creates new figure and axes
hAxes = gca;        % Get the axes handle
hold on;            % Allow subsequent plots to be added

temp = MyProgressBar();

plot(hAxes, rand(100,1));  % Will be added to the first plot axes