【问题标题】:Why won't this axes object display correctly in MATLAB?为什么这个坐标区对象不能在 MATLAB 中正确显示?
【发布时间】:2009-11-11 15:22:52
【问题描述】:

我正在 MATLAB 中编写两个小型心理声学测试应用程序。第一个没有问题,但第二个没有,我就是不知道为什么。

问题是:创建了坐标区对象,但它是空的。

failed_axis http://dl.getdropbox.com/u/98854/help.png

这是创建此图形和轴的代码:

hFig = figure('dockcontrols','off','menubar','none', ...
              'name','choose the better sounding file', ...
      'numbertitle','off','position',[0,0,700,500], ...
      'resize','off','toolbar','none','units','normalized', ...
      'color',[.8,.8,.8]);
progress_idc = axes('position',[.1,.8,.8,.05],'box','on','parent',hFig,...
            'xlim',[-.03,1.03],'xtickmode','manual','xtick',[], ...
            'xticklabelmode','manual','xticklabel',[], ...
            'ylim',[-1,1],'ytickmode','manual','ytick',[], ...
            'yticklabelmode','manual','yticklabel',[], ...
            'nextplot','add');

这里是在这个轴上绘制的代码(该函数由计时器定期调用):

function replot(varargin) % this is a nested function
    cla;

    % plot start_indicator
    plot([x_start,x_start],[-.7,.7],'k','linewidth',2);
    fill([x_start,x_start-.02,x_start-.02],[0,-.7,.7],[0,0,0]);

    % plot stop_indicator
    plot([x_stop,x_stop],[-.7,.7],'k','linewidth',2);
    fill([x_stop,x_stop+.02,x_stop+.02],[0,-.7,.7],[0,0,0]);

    % plot play_position
    plot([x_play,x_play],[-1,1],'r');

    drawnow;
end

这就是它的样子:

proper_axis http://dl.getdropbox.com/u/98854/help2.png

你知道这里出了什么问题吗?

【问题讨论】:

  • 我认为您还需要显示在轴上绘制对象的代码。我认为上面的代码不足以继续为您找出解决方案。

标签: matlab plot


【解决方案1】:

我运行了上面包含的代码并得到了正确的输出。

如果我必须对问题所在进行疯狂猜测,我猜您可能正在您的应用程序中创建上面未列出的其他轴,或者您可能在应用程序运行时打开与应用程序无关的其他轴。当您在函数replot 中绘制对象时,默认情况下会将它们绘制到currently active 轴上。如果您打开了多个轴,则绘图可能会在错误的轴组中进行。

我要提出的一个建议是在您对PLOTFILL 的调用中明确指定父坐标区对象应该是什么。如果将参数 ...,'Parent',progress_idc); 添加到绘图调用中,它将确保始终使用正确的轴。我养成了始终指定父坐标区对象的习惯,而不是假设当前活动的坐标区始终是我需要的坐标区。

【讨论】:

    【解决方案2】:

    我终于找到了(愚蠢的)答案。标题意外地与绘图轴的位置相同。由于 Matlab 的一些渲染细节,它会遮蔽除最右边和最底端的像素线之外的整个轴,这使得轴看起来“空”。

    哦,多么愚蠢的错误。

    【讨论】:

    • 是的,大多数错误事后看来都是愚蠢的。 ;) 从您发布的图片来看,我认为标题文本框不会向下延伸那么远。尽管如此,我仍然建议使用我上面给出的建议,并明确告诉你的绘图命令它们应该去哪里。
    • 是的,这是个好建议!让程序明确地做正确的事情当然比依赖隐含的假设(或机会!)更好。
    猜你喜欢
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多