Reputation: 9818
I need to plot and save to image file in MATLAB. Here is the code that I am calling inside a 'for' loop:
figure
scatter(data_x_pos,data_y_pos,'r*')
hold on
scatter(data_x_neg,data_y_neg,'b')
t = linspace(-80,80);
y = -model.w(1)*t/model.w(2);
plot(t,y,'k');
% need to save this plot to image to a file here
Now, this is starter code that I am using for some work and I don't understand it completely (example - the command 'figure'). There have been suggestions to use saveas or print but I believe I need handles for them. Could someone help me out here?
Thanks.
Upvotes: 11
Views: 30488
Reputation: 41
An alternative solution that may aid some is to take advantage of the fact that Matlab updates a variable called gcf
"get current figure handles" each time a figure is created. Even if a handle is not expressly created with the f = figure();
handle declaration command, you can still use commands such as print()
and saveas()
by calling the gcf
handle variable. For example, this block of code might also function for others who do not have the OP's requirement to operate within a large for
loop with uniquely identified figures:
scatter(data_x_pos,data_y_pos,'r*')
hold on
scatter(data_x_neg,data_y_neg,'b')
t = linspace(-80,80);
y = -model.w(1)*t/model.w(2);
plot(t,y,'k');
hold off;
saveas(gcf,'filename','png')
Upvotes: 4
Reputation: 5893
figure()
is a function which returns a handle to the figure:
f = figure()
scatter(data_x_pos,data_y_pos,'r*')
...
You can then use this handle to save the figure:
saveas(f, 'image.png');
Take a look at the tutorials on Handle Graphics to learn more.
scatter
, and plot
also return handles to the collection of points, or the lines, or whatever, they've plotted.
Upvotes: 17