使用Matlab 2012和2013,我发现在XTickLabel
图表上设置bar
仅适用于最多15个小节。如果有更多条形,则缺少标签,如下所示。
绘制15个柱子:
N = 15;
x = 1:N;
labels = num2str(x', '%d');
bar(x);
set(gca, 'XTickLabel', labels);
绘制16条:
N = 16;
x = 1:N;
labels = num2str(x', '%d');
bar(x);
set(gca, 'XTickLabel', labels);
对于N > 15
,它始终只显示10个标签。
有没有其他人经历过这个?任何解决方法?我需要所有标签,因为我正在绘制离散类别而不是连续函数。
答案 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);
然后你会得到想要的结果:
无论出于何种原因,16似乎是MathWorks决定不应为每个条形图绘制XTick
的神奇数字,如果需要,可以由用户自行设置它们。