What is the best way to create a figure from an existing axes in a GUI?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi all,
Using GUIDE I created a GUI and in it I placed an axes where I plot some graphs. Of course, the size of the plot area is fixed to the size of the axes I created while constructing the GUI. From time to time there is a need to plot the same data on a figure (outside the GUI) where I can change size or just keep it when I plot a different graph on the same axes on the GUI. I know that I can create a figure, recalculate whatever was calculated for the fixed graph and direct the plot to the new figure.
My question is: is there a simple way to direct the data in the existing GUI axes to a newly created 'fig' without re-calculating the data?
Thanks,
Alon
0 commentaires
Réponse acceptée
Jan
le 20 Déc 2016
Modifié(e) : Jan
le 26 Déc 2016
This is a job for copyobj:
function YourGUI
FigH = figure('Title', 'The GUI');
AxesH = axes('Parent', FigH, ...
'ButtonDownFcn', @AxesCallback);
plot(1:10, rand(5,10), 'Parent', AxesH);
end
function AxesCallback(AxesH, EventData)
% [EDITED] Reject single left clicks:
DlgH = ancestor(AxesH, 'figure');
SelectionType = get(DlgH, 'SelectionType'); % Or use the EventData
if strcmpi(SelectionType, 'normal')
return;
end
newFigHJ = figure;
newAxesH = copyobj(AxesH, newFigH); % [EDITED, Arguments swapped]
% [EDITED] Adjust position:
set(newAxesH, 'Units', 'normalized', 'Position', [0.1, 0.1, 0.8. 0.8]);
end
The UIContextMenu of the figure or of the axes, or a specific button under the axes would be a nice method to trigger the exprt also.
5 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Specifying Target for Graphics Output dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!