Saveas (visible, off)

조회 수: 9 (최근 30일)
Aadil
Aadil 2012년 4월 3일
답변: Igor Varfolomeev 2015년 11월 13일
Hi I'm working on a script that creates a load of plots then saves them as individual fig files as well as all into a pdf file.
The problem I'm having is that although I've set visible to off, the plots still come up after going through the saveas function, so now I have to resort to using 'close all' after each graph. But even close all cause the graphs to flash up momentarily.
This is very annoying as I want the whole process invisible and not interfering with my desktop space.
Please help
Thanks
This is my script:
%%Throttle
i = i + 1;
figure(i)
set(gcf,'Visible','off','PaperOrientation',
'landscape','PaperPositionMode','manual','PaperPosition',[0.1, 0.1,30, 20]')
set(gca,'fontsize',10);
% Set Parameters to Plot
if exist('Accelerator_Pedal_Position'); plot(Elapsed_Time, Accelerator_Pedal_Position,'LineWidth', 1 ); else plot (0,NaN,'w'); end;
h=legend('Accelerator\_Pedal\_Position');
set(h,'fontsize',6);
% Set title for plot
title(['220HP'; 'Automated Manual';raw(3);'Throttle']);
%Set Labels for X and Y Axes'
xlabel ('Elapsed Time (s)');
ylabel ('Accelerator\_Pedal\_Positionn (%)')
xlim ([-inf inf])
grid on;
box on;
fpath = 'D:\Users\km933\Documents\MATLAB\Field Test v1';
saveas(figure(i), fullfile(fpath, 'Throttle'), 'fig');
print -dpsc -append myfile
close all
  댓글 수: 1
Aadil
Aadil 2012년 4월 4일
anyone?

댓글을 달려면 로그인하십시오.

채택된 답변

Robert Cumming
Robert Cumming 2012년 4월 4일
When you create your figure set the position to be off your screen, i.e.
'position', [10000 10000 800 600]
That way it wont be displayed on your desktop.
  댓글 수: 4
Aadil
Aadil 2012년 4월 4일
Great, this works nice one mate cheers
Aadil
Aadil 2012년 4월 11일
right, after checking my figure files I've discovered that this method causes the figures to be invisible ie. when you click to open the file nothing opens as its positioned off the screen

댓글을 달려면 로그인하십시오.

추가 답변 (4개)

Titus Edelhofer
Titus Edelhofer 2012년 4월 4일
Hi Aadil,
the problem I guess is the call figure(i) in saveas. Just use
save(i, fullfile(...));
One minor issue: do you need the figure to be numbered? Otherwise I would usually suggest something like
% create invisible figure
hFigure = figure('Visible','off','PaperOrientation',
'landscape','PaperPositionMode','manual','PaperPosition',[0.1, 0.1,30, 20]');
% do your plotting etc.
% and save:
save(hFigure, fullfile(...));
% and close it:
close(hFigure);
Titus
  댓글 수: 4
Jan
Jan 2012년 4월 4일
@Aadil: Can you confirm, that the SAVE command makes the figure visible?
Either use the debugger by setting a breakpoint in the code and step through the program line by line, or use "disp('before save'); pause(1);" and "disp('after save')".
Aadil
Aadil 2012년 4월 4일
I'm not sure,I had a look at the code and don't really understand it

댓글을 달려면 로그인하십시오.


Jan
Jan 2012년 4월 4일
Some functions to copy the contents of a figure requires an enabled visibility. I assume it is print in your case, but I've seen this behaviour for getframe only yet.
I assume there is no workaround and getting annoyed is not good solution. I suggest a coffee break.
  댓글 수: 2
Aadil
Aadil 2012년 4월 4일
no I've tried it with just the print function and the graphs stay invisible, its when I want them to be saved as fig files that causes them to flash up again
I'm assuming this flashing up of graphs is also slowing the process down?
Robert Cumming
Robert Cumming 2012년 4월 4일
yes the rendering will be making it slower.

댓글을 달려면 로그인하십시오.


Sebastian
Sebastian 2013년 1월 3일
I've also created a routine like Aadil in which many plots were created, saved, reloaded, updated and again saved... all automagically.
I created it in Matlab 2010a (Win XP) and it worked great, as the figures were all the time invisible (no need to plot outside the screen), and it worked fast...
Now that I have R2011b and Win 7, the routine became slower and it shows every figure before it is saved.
Any way to change it back ? is it Win 7 or the newer Matlab Version ?
Best regards,

Igor Varfolomeev
Igor Varfolomeev 2015년 11월 13일
If anyone is still looking for an answer, take a look at this post - I've just tried to collect all known workarounds in a single post.

카테고리

Help CenterFile Exchange에서 Printing and Saving에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by