What is the best way to create a figure from an existing axes in a GUI?
3 views (last 30 days)
Show older comments
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 Comments
Accepted Answer
Jan
on 20 Dec 2016
Edited: Jan
on 26 Dec 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 Comments
More Answers (0)
See Also
Categories
Find more on Interactive Control and Callbacks in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!