【问题标题】:Matlab draw 'subaxis' based subplots on specified 'axes'Matlab 在指定的“轴”上绘制基于“子轴”的子图
【发布时间】:2014-03-06 15:56:57
【问题描述】:

我正在使用 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

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

任何帮助将不胜感激。非常感谢。 A.

【问题讨论】:

    标签: matlab user-interface subfigure


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回复。问题是我无法删除前两行。因为这是我的 GUI 的简化版本。我需要在一个指定的“轴”(例如,示例中的“轴”)中绘制“子轴”(包含子图)。在我的 GUI 中有 ax_1、ax_2、... ax_n。我使用 axes(ax) 命令指定“ax”是当前显示绘图的轴。
    • 好的,在这种情况下,您应该在此处发布 GUI 代码的完整或相关部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2014-08-22
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多