How to save an axes within a GUI to a .fig
22 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Daniel Green
il 9 Ago 2017
Commentato: Daniel Green
il 10 Ago 2017
When I try this:
[FileName,PathName] = uiputfile;
saveDataName = fullfile(PathName,FileName);
saveas(handles2.axes9,saveDataName);
It saves a file, but when I open the file, it is just another GUI. It is saving an iteration of my GUI when I only want it to save "handles2.axes9" to a ".fig" Help?
3 Commenti
Jan
il 9 Ago 2017
For Matlab programmers, a "figure" is usually the window, which is created by the command figure. An "axes" is the axes box with the tick-lables and the contents drawn into a figure. Then what does "save a figure of the axes" mean? The saveas command saves the figure and then it contains the other data also. This is the meaning of a .fig file. Therefore I still do not know, what you want to solve. There is no way to save a .fig file without the data, which belong to .fig files.
Do you want a screen shot as .png file? Could you create an example image of what you want?
Risposta accettata
Teja Muppirala
il 10 Ago 2017
This might work. You create a new (temporary and invisible) figure, and then use COPYOBJ to copy that axes to the new figure. You could then save the new figure to a FIG file (here "test.fig").
%%1. Make sample figure
handles.f = figure;
handles.axes1 = subplot(211);
handles.axes2 = subplot(223);
handles.axes3 = subplot(224);
plot(handles.axes1,rand(5));
imagesc(handles.axes2,rand(10,10));
title(handles.axes2, 'My IMAGESC');
xlabel(handles.axes2,'X values');
ylabel(handles.axes2,'Y values');
surf(handles.axes3,peaks);
%%2. Copy axes to new figure and save
outputFileName = 'test.fig';
fignew = figure('Visible','off'); % Invisible figure
newAxes = copyobj(handles.axes2,fignew); % Copy the appropriate axes
set(newAxes,'Position',get(groot,'DefaultAxesPosition')); % The original position is copied too, so adjust it.
set(fignew,'CreateFcn','set(gcbf,''Visible'',''on'')'); % Make it visible upon loading
savefig(fignew,'test.fig');
delete(fignew);
If there is a colorbar, you'll need to do some extra work (you have to copy that as well using COPYOBJ since it is not a child of the axes).
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Printing and Saving in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!