What is the best way to create a figure from an existing axes in a GUI?

3 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

Jan
Jan il 20 Dic 2016
Modificato: Jan il 26 Dic 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 Commenti
Alon Rozen
Alon Rozen il 21 Dic 2016
Thanks Jan :)
You solved it all!! The only remark I have is that the order of the variables inside 'copyobj' should be reversed.
Thank you so much!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Interactive Control and Callbacks 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!

Translated by