在Matlab GUI中保存多个轴的图:

时间:2013-11-06 00:37:10

标签: matlab user-interface plot

我正在为项目开发GUI(以编程方式。没有使用GUIDE),我需要在同一个GUI上放置11个轴。我正在使用axes命令来获取11个控件的句柄:

h.AXES_ALL(1)=axes('parent',h.fig,'position',[L1 T W H]);
h.AXES_ALL(2)=axes('parent',h.fig,'position',[L2 T W H]);
h.AXES_ALL(3)=axes('parent',h.fig,'position',[L3 T W H]);
...

它们都具有相同的尺寸,我使用for指令绘制数据:

for i=1:11
           set(h.PLOT(i),'parent',h.AXES_ALL(i),'XData',x_data,'YData',y_data);            
end

但问题是最后一个曲线(第11个)是在轴控制(第11个)上显示的曲线,而所有其他轴都是空的。我的目标是在11个不同的轴控件上绘制11条曲线。它们不在同一位置,只是为了记录。

提前谢谢!

查理

1 个答案:

答案 0 :(得分:2)

你在评论中说你从单轴手柄开始:

ha = axes;

并且您尝试使用相同的父轴创建两个图,但它不能按预期工作:

>> h.PLOT(1:2) = plot(ha,0,0)
h.PLOT =
  195.0035  195.0035

那只是复制了相同的情节系列句柄。因此,当您为每个绘图设置绘图数据和父轴时,您只需将绘图从轴移动到轴,在您离开时更新数据。

在循环中使用plot命令,使用每个绘图的相应轴手柄:

for ip=1:11,
    h.PLOT_ALL(ip) = plot(h.AXES_ALL(ip),...);
end

然后,当您根据需要更新地图的XDataYData时,您不必更改父轴。