2

我正在使用 Matlab 编写一些 GUI 人员。我想使用“子轴”方法(可以在 Matlab FX subaxis.m上下载)在一个指定的“轴”中绘制一个带有子图的图形。

该程序一开始表现得非常正确。由于子图通过一键更新。然后错误弹出。我简化了问题并编写了一些测试代码,如下所示:

% Specify an 'axes' in my GUI (here is an example of axes handle called 'ax')
ax = axes;
axes(ax); 
cla(ax, 'reset');

% Plot something using 'subaxis' with multiple subfigures 
x = 0:0.1:10;
spacing = 0.0;
subaxis(3,1,1,'Spacing',spacing);
plot(x,rand(size(x)),'k')
legend('D','Location','NorthWest')
ylim([-0.2 1])
set(gca, 'box','off')
set(gca,'XAxisLocation','top')

subaxis(2,'Spacing',spacing);
plot(x,rand(size(x)),'r')
legend('C','Location','NorthWest')
ylim([-0.2 1])
set(gca,'xtick',[],'box','off','xcolor','w')

subaxis(3,'Spacing',spacing);
plot(x,rand(size(x)),'b')
legend('B','Location','NorthWest')
set(gca, 'box','off')

该程序在这一点上很好,并且达到了我的预期。现在我按下一个按钮来更新这些子图,但仍想在名为“ax”的指定轴中绘制子图:

axes(ax); 
cla(ax, 'reset');

x = 0:0.1:10;
spacing = 0.0;
subaxis(3,1,1,'Spacing',spacing);
plot(x,rand(size(x)),'k')
legend('D','Location','NorthWest')
ylim([-0.2 1])
set(gca, 'box','off')
set(gca,'XAxisLocation','top')

subaxis(2,'Spacing',spacing);
plot(x,rand(size(x)),'r')
legend('C','Location','NorthWest')
ylim([-0.2 1])
set(gca,'xtick',[],'box','off','xcolor','w')

subaxis(3,'Spacing',spacing);
plot(x,rand(size(x)),'b')
legend('B','Location','NorthWest')
set(gca, 'box','off')

出现错误!!!

Error using axes
Invalid object handle

不知道该怎么做,因为错误信息太简短了。似乎子轴只能绘制到特定的“轴”一次。

任何帮助,将不胜感激。非常感谢。一个。

4

1 回答 1

0

从第二段代码的顶部删除这两行:

axes(ax); 
cla(ax, 'reset');

现在 matlab 将更新当前图中的图形。我已经在一个普通的(非 GUI)matlab 文件中测试了它,它工作正常。如果它不适合您,请发布 GUI 的详细信息,因为其中可能存在一些相关问题。

于 2014-03-06T17:25:24.947 回答