MATLAB Answers

Save (Axes) As in GUI

26 views (last 30 days)
R Hebi
R Hebi on 25 Nov 2019
Commented: Ankit on 25 Nov 2019
Hi,
I am using Matlab GUI (guide) to do some calculation and the results appear as a curve in figure (axes1). I would like to save the figure of this curve.
I created a push button (pushbutton1), and I inserted many different codes the problem with most of them are
  1. It saves the whole GUI window not only the (axes1)
  2. When the save window is opened to wirte the file name/path, if the user click on cancel it will break down and an eeror is appearing
Thx

Accepted Answer

Ankit
Ankit on 25 Nov 2019
Edited: Ankit on 25 Nov 2019
Updated!
Based on your comment I updated the answer
function pushbutton_SaveasImg_Callback(hObject, eventdata, handles)
Fig1 = figure('Units','normalized','Position',[0.1 0.1 0.8 0.8]);
set(Fig1,'Visible','off');
find_leg = findobj(handles.axes4,'tag','legend'); % axes4 is the name of your Axes
% retrieve the legend strings
legendstr=get(find_leg,'String');
newAxes = copyobj(handles.axes4,Fig1); % Copy the appropriate axes
set(newAxes,'Units','normalized','Position',[0.1 0.1 0.8 0.8]);
% recreate the legend
legend(newAxes,legendstr,'Location','northeast');
% Save as Image file.
[FileName,PathName] = uiputfile( ...
{'*.jpg;*.tif;*.png;*.gif','All Image Files';...
'*.*','All Files (*.*)'});
% 2. When the save window is opened to write the file name/path,
% if the user click on cancel it will break down and an error is appearing
% below code avoid the error you are getting
if isequal(FileName,0) || isequal(PathName,0)
disp('User Clicked Cancel.')
else
disp(['User selected ',fullfile(PathName,FileName),...
' and then clicked Save.'])
saveas(Fig1, FileName);
close(Fig1);
end
  2 Comments
Ankit
Ankit on 25 Nov 2019
I updated the answer based on your feedback! You can add the file extension based on your requirements!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!