我有一个令人困扰的问题,我已经尝试了很长一段时间,而我却不知道它为什么会发生。我有一个自编码的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)
感谢您提供任何帮助或有关为什么发生这种情况的信息!
万一其他人遇到同样的问题,我联系了MATLAB技术支持,并被告知这是MATLAB端的一个错误,该错误已在下一版本(R2014b)中修复。他们说,如果您遇到的是我在原始问题中描述的问题,那么为了使条形图此时出现在轴的边界内,您可以编辑图形的“ Renderer”属性并将其设置为“ 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]);
现在,条形图会表现出应有的状态。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句