Matlab:条形图中缺少标签

时间:2013-12-07 08:57:47

标签: matlab charts bar-chart diagram

使用Matlab 2012和2013,我发现在XTickLabel图表上设置bar仅适用于最多15个小节。如果有更多条形,则缺少标签,如下所示。

绘制15个柱子:

N = 15;
x = 1:N;
labels = num2str(x', '%d');
bar(x);
set(gca, 'XTickLabel', labels);

N = 15

绘制16条:

N = 16;
x = 1:N;
labels = num2str(x', '%d');
bar(x);
set(gca, 'XTickLabel', labels);

N = 16

对于N > 15,它始终只显示10个标签。

有没有其他人经历过这个?任何解决方法?我需要所有标签,因为我正在绘制离散类别而不是连续函数。

1 个答案:

答案 0 :(得分:5)

这是因为tick 标签必须匹配刻度本身。在您使用N = 16;x = 1:N;给出的示例中,MATLAB自动生成以下XTick(至少在您和我的机器上):

>> xticks = get(gca,'xtick')
xticks =
     0     2     4     6     8    10    12    14    16    18
>> numel(xticks)
ans =
    10

16个不同的酒吧只有10个标记。因此,当您使用set(gca, 'XTickLabel', labels);(16个标签)运行labels = num2str(x', '%d');时,它会显示您在条形图之前/之后(位置0和18处)显示错误标签和刻度的第二个数字。

要为每个条形设置刻度标签,您还需要设置刻度以匹配:

set(gca,'XTick',x) % this alone should be enough
set(gca,'XTickLabel',labels);

然后你会得到想要的结果:

enter image description here

无论出于何种原因,16似乎是MathWorks决定不应为每个条形图绘制XTick的神奇数字,如果需要,可以由用户自行设置它们。