如何在显示背景时抑制图形窗口的显示,以便在运行结束时保存结果图?这样做的最佳做法是什么?目前,我的代码是这样的:
showPlot = 1; % switch to turn plotting on/off
fig = figure(1); clf; hold on;
lineHandle = line(nan, nan);
total = 0;
for i = 1:10000
% long calculation
total = total + 1;
set(0, 'CurrentFigure', fig);
xlim([0, total]);
x = [get(lineHandle, 'XData'), total];
y = [get(lineHandle, 'YData'), rand()];
set(lineHandle, 'XData', x, 'YData', y);
drawnow;
end
% saveas(gcf, file, 'png');
我想以这样的方式设置代码:当我将showPlot设置为0时,图形窗口不会显示,但是图表会保存到文件中。
答案 0 :(得分:17)
要使当前数字不可见:
set(gcf,'visible','off')
答案 1 :(得分:13)
为避免在MATLAB中显示数字,您可以使用noFigureWindows选项启动MATLAB。此选项在UNIX上不可用。
matlab -noFigureWindows
作为替代方法,您可以更改MATLAB根对象的默认图形属性:
set(0,'DefaultFigureVisible','off')
如果您想暂时禁止稍后可在同一会话中访问的新数据,则可以保存数字句柄:
set(0,'DefaultFigureVisible','off');
%create invisible figure 1
h(1)=figure;
%create invisible figure 2
h(2)=figure;
set(0,'DefaultFigureVisible','on');
%show figure 1
figure(1)
顺便说一下,close all
会关闭所有当前打开的数字。
答案 2 :(得分:2)
在U20ntu的R2015b上,其他答案对我不起作用,我的数字窗口总会显示出来。
我正在处理100多个文件,弹出的图形窗口阻止我在处理文件时使用我的电脑。
这是一个解决方法,启动没有显示的matlab:
matlab -nodesktop -nodisplay
这将阻止数字窗口显示。以编程方式将图形保存到文件仍然有效。
答案 3 :(得分:0)
如前所述,要在实例化期间禁止显示数字,请先调用
set(0, 'DefaultFigureVisible', 'off');
% or, if post Matlab R2014b
set(groot, 'DefaultFigureVisible', 'off');
在此调用之后,在脚本中创建新数字不会导致弹出可见窗口。当然,恢复此设置的方法是
set(0, 'DefaultFigureVisible', 'on');
% or, if post Matlab R2014b
set(groot, 'DefaultFigureVisible', 'on');
“陷阱”是激活现有数字以进一步操纵将导致可见窗口 - 如果操作不正确:
% suppress visible plot window creation
set(groot, 'DefaultFigureVisible', 'on');
figure(1); % will not result in a visible window
plot(0:.01:pi,sin(0:.01:pi));
hold on
figure(2); % still no visible window
plot(0:.01:10,(0:.01:10).^2);
% so far so good
% ... other statements ...
% select figure 1 to add to it:
figure(1); % visible window appears!
plot(0:.01:pi,cos(0:.01:pi));
hold off;
% ...
解决方法是使用另一个 set 命令来选择现有数据:
set(groot, 'DefaultFigureVisible', 'on');
figure(1); % will not result in a visible window
plot(0:.01:pi,sin(0:.01:pi));
hold on
figure(2); % still no visible window
plot(0:.01:10,(0:.01:10).^2);
set(groot, 'CurrentFigure', 1); % still no visible window
% plot commands will apply to figure 1
plot(0:.01:pi,cos(0:.01:pi));
hold off
% ...
无论“DefaultFigureVisible”的设置如何,都要调用
figure(h);
其中h是现有绘图窗口的句柄或整数,导致该窗口变为活动且可见。因此,可以通过这种方式在脚本底部显示所有图:
fh = get(groot, 'Children');
for x = 1:numel(fh)
figure(fh(x));
end