Dom*_*omi 3 diagram matlab charts bar-chart
通过Matlab 2012和2013,我发现XTickLabel
在bar
图表上设置最多只能使用15个小节.如果有更多条形,则缺少标签,如下所示.
绘制15条:
N = 15;
x = 1:N;
labels = num2str(x', '%d');
bar(x);
set(gca, 'XTickLabel', labels);
Run Code Online (Sandbox Code Playgroud)
绘制16条:
N = 16;
x = 1:N;
labels = num2str(x', '%d');
bar(x);
set(gca, 'XTickLabel', labels);
Run Code Online (Sandbox Code Playgroud)
因为N > 15
,它始终只显示10个标签.
有没有人经历过这个?任何解决方法?我需要所有标签,因为我正在绘制离散类别而不是连续函数.
这是因为刻度标签必须与刻度本身匹配.在这个例子中你用了N = 16;
和x = 1:N;
,MATLAB自动进行以下XTick
S(在你和我的机器,至少):
>> 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
不应为每个条形图绘制的神奇数字,如果需要,可以由用户自行设置它们.