Reputation: 25560
The problem with octave(matlab). In the program I have loop where I plot data. In the end of each loop I save plots to disc. During this process octave draw each plot. It slows down the process. I need only plots to be saved on disc. If I could not display them,but just save, it would considerably accelerate the process. Is there way to draw plot to handler without displaying it? to draw I use scatter
function.
Upvotes: 9
Views: 9369
Reputation: 8091
Offscreen rendering is supported on GNU/Linux since GNU Octave 4.0 using OSMesa. So today there are basically two ways to get figure ("visible", "off");... print (...)
working:
graphics_toolkit gnuplot
as said beforeUpvotes: 2
Reputation: 3149
This is not tested with matlab, and potentially only limited to octave.
Using f = figure('visible','off')
will not work out of the box.
You need to select a proper graphics toolkit:
available_graphics_toolkits
ans =
{
[1,1] = fltk
[1,2] = gnuplot
}
The default is fltk
which cannot write to file without displaying the plot. However, if you select gnuplot
it will be able to write to file without displaying it first:
graphics_toolkit gnuplot
f = figure('visible','off')
plot(...)
axis(...)
filename=sprintf('output/%05d.png',t);
print(filename);
It is not particularly fast, but it doesn't use screen buffers or captures the mouse, which happens if the plot needs to be visible.
Upvotes: 8
Reputation: 16035
As answered in this question, I would do:
f = figure('visible','off')
Upvotes: 5