【问题标题】:Matlab - How to use strings instead of numbers in bar figureMatlab - 如何在条形图中使用字符串而不是数字
【发布时间】:2011-09-17 20:11:41
【问题描述】:

我想使用 bar 函数获得一个 Matlab 图形,但是当绘制实际图形而不是在我想要显示的每个条下方显示数字时,它代表了绘制的实际值。

例如,我有向量 x = [1 2 3],而不是在每个绘制的条形下方显示 1、2 和 3,我想显示与这些值之一对应的字符串 y = {'sam'; 'alan'; 'ellie'}

您能解释一下我如何获得这个吗?

【问题讨论】:

    标签: matlab plot label bar-chart


    【解决方案1】:
    x = [1 2 3];
    str = {'sam'; 'alan'; 'ellie'};
    bar(x)
    set(gca, 'XTickLabel',str, 'XTick',1:numel(str))
    

    【讨论】:

    • 使用 Platinummonkey 的解决方案,包括 'XTick',1:4(或 1:numel(Labels))对我来说比单独使用 'XTickLable' 更强大。在某些情况下,省略“XTick”会导致标签移位。
    • @Jacob:当然,指定XTick 也无妨。不过我很好奇,你有标签放错地方的例子吗?
    • 例如数字();坚持,稍等;酒吧([10 22 2 11]);标签={'#7','#8','#9','#10'};设置(gca,'XTickLabel',标签);推迟
    • 如果你这样做,它会起作用:figure();坚持,稍等;酒吧([10 22 2 11]);标签={'#7','#8','#9','#10'};设置(gca,'XTick',1:numel(标签),'XTickLabel',标签);推迟
    • @Jacob:啊,我明白了,很好的例子。一次执行你的代码一条语句,你会发现hold on 是问题的原因;它创建一个带有默认刻度线的轴,然后当您向其添加条形图时,它显然会尝试保持相同的刻度数。此时,自定义标签将轮流应用(重复使用),因为现在您的刻度比相应的标签多。我正在更新我的答案,谢谢 Jacob。
    【解决方案2】:

    http://www.mathworks.com/matlabcentral/newsreader/view_thread/21178

    Labels = {'a', 'b', 'c', 'd'};
    set(gca, 'XTick', 1:4, 'XTickLabel', Labels);
    

    如果您需要更改 Y-labels,请将 YTickLabel 替换为 XTickLabel

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-19
      • 2016-06-19
      • 2017-11-15
      • 2011-01-04
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 2011-04-10
      相关资源
      最近更新 更多