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.
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.
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.
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' .
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.
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.
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')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With