Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 将图形设置为不是下一个绘图的目标_Matlab_Matlab Figure - Fatal编程技术网

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

Matlab 将图形设置为不是下一个绘图的目标,matlab,matlab-figure,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

我正在制作一个带有一些图表的自定义进度监视器。我注意到Matlab的
waitbar
创建了一个具有一些特殊属性的图形,因此如果

plot(rand(100,1));
wb = waitbar(0);
plot(rand(100,1));
第二个绘图最终替换第一个绘图,而不是在
wb
是否可以设置一个属性,以便在创建进度监视器并随后绘图时,图形不会出现在我的图形中?

说清楚一点,我想

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

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

为了保护进度条图形不受后续打印操作的影响,我将其轴的位置设置为
“off”
。这将防止它成为当前轴,从而防止后续打印命令修改或添加到其中。通常,对于独立图形/GUI来说,以这种方式关闭所有对象(图形、uicontrols等)的句柄可见性是一种很好的做法,以防止它们被外部代码修改。这几乎可以肯定是代码中所做的

另一方面,最好的做法是通过以下方式将绘图指向给定的轴。如果要将新绘图添加到现有绘图中,还必须确保首先使用命令之类的方法。假设您希望两个图显示在同一轴上,我将重新编写您的示例:

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

使用
figure()在第二次调用
plot
…之前?不,我正在寻找
temp
的属性,这样它就不会包含默认轴。您的问题是
waitbar
轴会变成默认轴?有趣的是,在R2016b中,绘图不会转到waitbar图,这是因为默认情况下,waitbar图形是在R2016b中创建的,其
'Handlvisibility'
属性设置为
'callback'
,而不是
'on'
(请参阅)