cc2005726 发表于 2009-12-15 11:02

使用GUIDE作界面时如何在指定的坐标轴上画多子图

3我用GUIDE工具做了个界面,如图1.
要实现这样的功能,按下单个按钮时,在左边的坐标轴上显示“单个角度”的曲线,按下“所有角度”按钮时,要在左边的坐标轴上分子图显示曲线。
但我现在只能实现在坐标轴上重叠显示所有角度的曲线,如图2。当我试图用subplot函数分子图时,界面变成了图3,坐标轴突然变大了,而且盖住了原来界面右边的图,请问这个要怎么办啊?
我画子图的代码如下
在“所有角度”按钮的回调函数中
function allangle_Callback(hObject, eventdata, handles)
% hObject    handle to allangle (see GCBO)
% eventdatareserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
axes(handles.angper);   %这是左边坐标轴的句柄
cla;
anglelabel={'1','2','3','4','5','6','7','8','9','10','11','12','13'};%设置legend的标题
colorlist={'b','m','c','r','g','y','k'};

for i=1:handles.m-2    %handles.m-2是角度个数
subplot(handles.m-2,1,i);
plot(handles.angle(:,i),colorlist{i});
legendlabel{i}=anglelabel{i};
hold on
end
legend(legendlabel,'location','best');
grid Minor
hold off

[ 本帖最后由 cc2005726 于 2009-12-15 11:08 编辑 ]

cc2005726 发表于 2009-12-16 16:27

回复 楼主 cc2005726 的帖子

我这几天的调试,有一种感觉,subplot一句好像是自己创建一个新的坐标轴,把之前在界面上放置的坐标轴都给删掉了,所以在上面图三中可看到,原界面中的两个坐标轴都不见了。而且我在帮助里面看到一句: If the CurrentAxes is nested in a uipanel, the panel is used as the parent for the subplot instead of the current figure. The new axes object becomes the current axes. 所以subplot是把panel当成绘图区域了。

所以我想到了一个不是很好的解决方案:
把左边坐标轴再放在一个panel里,这个panel比坐标轴稍大,则可以用subplot命令在这个panel里画子图了。但是最后显示的界面是大panel里再套个小panel,不是很干净。所以我在想,能不能把panel的可见属性设成不可见呢。试过之后,发现一旦设成不可见,则连带着panel里的坐标轴也看不见了~~

各位有没有什么方法能让panel那个边框不显示,只显示里面的坐标轴啊?

[ 本帖最后由 cc2005726 于 2009-12-16 17:11 编辑 ]
页: [1]
查看完整版本: 使用GUIDE作界面时如何在指定的坐标轴上画多子图