MATLAB Answers

How to switch between one plot and two subplots on a GUI?

15 views (last 30 days)
Alon Rozen
Alon Rozen on 18 Dec 2016
Commented: Alon Rozen on 24 Jan 2017
Hi all,
I created a GUI, using GUIDE, and in it I placed an axes. I have no problem to reach this axes and plot whatever on it. In some cases I want to use two subplots where this axes is located. I tried it and the original axes was deleted while two others, one for each subplot, were created. Now I can't return to the one axes configuration because it is gone.
What is the best approach to be able to switch between one plot and two subplots at the same place where the original axes is located?
Thanks,
Alon

  0 Comments

Sign in to comment.

Answers (2)

Jan
Jan on 18 Dec 2016
SubPlotH = [subplot(2,1,1), subplot(2,1,2)];
AxesH = axes;
for k = 1:10
if rem(k, 2) == 1
set(SubPlotH, 'Visible', 'off');
set(AxesH, 'Visible', 'on');
else
set(SubPlotH, 'Visible', 'on');
set(AxesH, 'Visible', 'off');
end
pause(1);
end

  3 Comments

Alon Rozen
Alon Rozen on 19 Dec 2016
Thanks Jan Simon, interesting idea. The problem is that once the axes is on a panel in the GUI, when I plot on the sub plots it is deleted. Any action regarding this axes trigger an error response.
I know I can create another panel, create two different axes on it, to serve as my subplots, and then switch the visibility between the two panels. I thought that there might be a simpler solution.
Jan
Jan on 19 Dec 2016
No, the axes object is not deleted, "when you plot on the subplots". This deleting must have a cause. So please use the debugger at first to find the reason of the deleting, or at least the line, where it is deleted. Then post the relevant code.
Alon Rozen
Alon Rozen on 23 Jan 2017
Hi Jan,
I am back to this problem: Suppose the axes is kept in the 'handle' of the GUI as 'handles.My_Axes', and I have a function named 'Create_Subplots' to create two subplots instead.
After using:
H = handles.My_Axes;
Create_Subplots(H);
inside 'Create_Subplot' I have the code:
function Create_Sublpot(H)
set(H,'Visible','off');
H1 = subplot(1,2,1);
...
end
Now I put a break point on the line that create the subplot H1. before this line H is still an existing axes. After executing this line i get for H:
H: 1x1 matlab.graphics.axis.Axes = handle to deleted Axes
How can I avoid this?
Alon

Sign in to comment.


Walter Roberson
Walter Roberson on 23 Jan 2017
subplot always deletes any axes that it overlaps. You need to axes() up new axes. Or, design three axes in GUIDE and hide what is not in use, never calling subplot.

Community Treasure Hunt

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

Start Hunting!