Subplots within a GUI figure

조회 수: 19 (최근 30일)
Pappu Murthy
Pappu Murthy 2017년 2월 10일
댓글: Pappu Murthy 2017년 3월 4일
I am developing a GUI using GUIDE. I have three axes defined in GUI. two of them I filled with two plots. The third axes, however, I would like to divide into several subplots. The problem is everytime I try to use it the subplot is dividing the entire GUI figure into several plots which is not what I wanted. Basically I have Axes1 which I filled with a figure, and Axes2 which I filled with another figure. and Now I have Axes3 which i like to divide into say 2x2 subplots. How do I do it?
  댓글 수: 7
Pappu Murthy
Pappu Murthy 2017년 2월 11일
cla command did work on my other two axes I have but not the one on Panel. I tried cla(handles.Sens.Children,'reset') but it only removed the graphics objects but still shows empty x and y axis.. when I tried to reduce from 3 plots to two plots for e.g... I had 2x2 subplots with three of the full then I chose to show 2 then it showed 2 graphs but it still keeps the 3rd one with bare x and y axis.
Pappu Murthy
Pappu Murthy 2017년 3월 4일
John Chilleri's comment helped me solve my problem successfully. I used the panel method suggested in the link provided in his comment.

댓글을 달려면 로그인하십시오.

답변 (2개)

Image Analyst
Image Analyst 2017년 2월 11일
Pappu, is this what you mean:
% Plot top plot.
subplot(2, 2, 1);
plot(1:10, 'bo-');
title('subplot(2, 2, 1)');
% Plot middle plot.
subplot(2, 2, 2);
plot(sind(1:80), 'rd-');
title('subplot(2, 2, 2)');
% Plot 4 more plots in the bottom left spot
subplot(4, 4, 9);
scatter(rand(1,40), rand(1,40));
title('subplot(4, 4, 9)');
subplot(4, 4, 10);
plot(exp(1:10)/30000, 'ko-');
title('subplot(4, 4, 10)');
subplot(4, 4, 13);
plot(exp(rand(1,10)), 'co-');
title('subplot(4, 4, 13)');
subplot(4, 4, 14);
plot(exp(1:-.1:0), 'go-');
title('subplot(4, 4, 14)');
  댓글 수: 4
Pappu Murthy
Pappu Murthy 2017년 2월 11일
here it is:
Pappu Murthy
Pappu Murthy 2017년 2월 11일
In the above the first two are two separate axes and i have figures. the third one (right most) is the one i would like to dynamically partition. It could be 2x2, or 3x3 or 4x4 depending on the situation. RIght now I am able to do this just once but the second time around when I try to change the number of subplots, the previous ones are not getting cleanly erased. I have this on a separate UiPanel as per one of the suggestions. hope that helps and you can see why the proposed answer does not work for me here.

댓글을 달려면 로그인하십시오.


Image Analyst
Image Analyst 2017년 2월 11일
You need to put two panels on your GUI. One will contain the single large axes, and the other will contain the 4 small axes. Then you just set the visible property to 'on' or 'off' to show whichever you want
% Show 4 axes
handles.panelFour.Visible = 'on'; % Show 4 axes.
handles.panelOne.Visible = 'off'; % Hide large axes.
% Show single large axes
handles.panelFour.Visible = 'off'; % Hide 4 axes.
handles.panelOne.Visible = 'on'; % Show large axes.
  댓글 수: 4
Pappu Murthy
Pappu Murthy 2017년 2월 13일
I am out of country now without my matlab. Will try when i get back. The problem is however, i did nt get your solution. Your references to mypicture did not quite match. And that is major confusion which is why i tried to explain my situation one more time.
Image Analyst
Image Analyst 2017년 2월 13일
I did not reference any variable or control called "mypicture". You use GUIDE and put two panels on it. I called them panelFour and panelOne but you can call them whatever you want. Reference them with the names that you actually used.
In one panel, place one axes. In the other panel, place 4 axes.
Then just set the visibility property of the two panels to show one and hide the other.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Migrate GUIDE Apps에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by