Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Plotting and Saving as File in MATLAB

Tags:

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.

like image 317
Navneet Avatar asked Oct 01 '11 02:10

Navneet


People also ask

How do I save a plotted graph in MATLAB?

Save Plots Interactively For example, create a bar chart. Save the chart to a file by hovering over the export button in the axes toolbar and selecting the first item in the drop-down list. MATLAB displays the Save As dialog box with the file type options.

How do I save a file in MATLAB?

When you modify a file in the Editor or the Live Editor, MATLAB® indicates that there are unsaved changes in the file by displaying an asterisk (*) next to the file name in the document tab. To save the file, go to the Editor or Live Editor tab, and in the File section, click Save.

How do I save a MATLAB figure as a JPEG?

saveas( fig , filename ) saves the figure or Simulink® block diagram specified by fig to file filename . Specify the file name as a character vector or string that includes a file extension, for example, 'myplot. jpg' .

How do I save a figure in MATLAB?

fig . savefig( H , filename ) saves the figures identified by the graphics array H to a FIG-file named filename . fig . savefig( H , filename , 'compact' ) saves the specified figures in a FIG-file that can be opened only in MATLAB® R2014b or later releases.


2 Answers

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.

like image 192
Alex Avatar answered Oct 29 '22 17:10

Alex


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')
like image 35
davidtheterp Avatar answered Oct 29 '22 17:10

davidtheterp