我有一个令人不安的问题,我现在已经想了很长一段时间,我不知道为什么会这样。我有一个自编码的GUI,我在主GUI图上有一个面板。在这个面板上我有一个轴,每当我在这些轴上绘制条形图并尝试使用yLim()或axis()编辑其视图时,轴将调整为我想要的尺寸,但条形图不会在轴的边缘切断,它将继续在页面上运行。在调试模式中玩了一段时间之后,我发现如果我从面板更改轴的父级到主图,条形图将正确显示轴边界内的内容,就像我想要的那样它来。我不想使用更改轴的父级作为永久解决方案,因为我想要介于几个不同的面板之间并且在主图上有一个轴而不是面板不起作用但我想知道如果有人知道为什么会这样,以及如何解决它。
例如,此代码会产生我遇到的问题:
mainFig = figure('Units','characters',...
'Position',[40 5 200 50],...
'Color',[100/255 145/255 209/255]);
axesPanel = uipanel('bordertype','etchedin',...
'Parent',mainFig,...
'Title','Axes Panel');
mainAxes = axes('parent',axesPanel,...
'Units','characters');
bar(mainAxes,1:10,1:10)
ylim(mainAxes,[6 10])
如果将轴的父级更改为数字,则问题不存在。这行代码就是这样:
set(mainAxes,'parent',mainFig)
感谢您提供有关为何发生这种情况的任何帮助或信息!
答案 0 :(得分:2)
为了防止其他人遇到同样的问题,我联系了MATLAB技术支持,我被告知这是MATLAB的一个错误,它将在下一个版本(R2014b)中修复。他们说,如果你遇到我在原始问题中描述的问题,那就是为了使条形图出现在轴内。目前的界限,您可以编辑图形的渲染器'属性并将其设置为“opengl'或者' zbuffer'。我已经对此进行了测试,这两个选项都有用,所以希望有助于:)
如果需要额外的澄清,我需要改变原始代码:
mainFig = figure('Units','characters',...
'Position',[40 5 200 50],...
'Color',[100/255 145/255 209/255]);
对此:
mainFig = figure('Units','characters',...
'Renderer','opengl',...
'Position',[40 5 200 50],...
'Color',[100/255 145/255 209/255]);
现在条形图的行为应该如此。