【问题标题】:MATLAB Bar Graph Plotting Over AxesMATLAB 条形图绘制轴
【发布时间】:2014-08-22 01:15:20
【问题描述】:

我有一个令人不安的问题,我已经尝试解决了很长一段时间,但我不知道为什么会发生这种情况。我有一个自编码的 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)

感谢您提供有关为什么会发生这种情况的任何帮助或信息!

【问题讨论】:

  • 您最好向 Mathworks 提交技术支持请求。这似乎是bar 实现中的一个问题,因为当您将bar 替换为基本plot 时没有问题。比较 ylim 和 parent 调整前后的属性时,没有任何异常。
  • 是的,我开始认为这是我无法控制的 MATLAB 端的问题,所以我将提交技术支持请求,但我真的希望会有一个让它在面板上工作的方法,而不必找到其他方式来表示我的数据。

标签: matlab panel bar-chart


【解决方案1】:

以防万一其他人遇到同样的问题,我联系了 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]);

现在条形图的行为应如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 2018-02-08
    相关资源
    最近更新 更多