Navneet
Navneet

Reputation: 9818

Plotting and Saving as File in MATLAB

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

Answers (2)

davidtheterp
davidtheterp

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

Alex
Alex

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

Related Questions