Matlab:条形图中缺少标签

Dom*_*omi 3 diagram matlab charts bar-chart

通过Matlab 2012和2013,我发现XTickLabelbar图表上设置最多只能使用15个小节.如果有更多条形,则缺少标签,如下所示.

绘制15条:

N = 15;
x = 1:N;
labels = num2str(x', '%d');
bar(x);
set(gca, 'XTickLabel', labels);
Run Code Online (Sandbox Code Playgroud)

N = 15

绘制16条:

N = 16;
x = 1:N;
labels = num2str(x', '%d');
bar(x);
set(gca, 'XTickLabel', labels);
Run Code Online (Sandbox Code Playgroud)

N = 16

因为N > 15,它始终只显示10个标签.

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

cha*_*pjc 5

这是因为刻度标签必须与刻度本身匹配.在这个例子中你用了N = 16;x = 1:N;,MATLAB自动进行以下XTickS(在你和我的机器,至少):

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

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

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

set(gca,'XTick',x) % this alone should be enough
set(gca,'XTickLabel',labels);
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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