如何在“条形图”上显示所有X轴标签?

7

我有以下数据,希望在MatLab中绘制条形图:

publications = [15 12 35 12 19 14 21 15 7 16 40 28 6 13 16 6 7 22 23 16 45];
bar(publications,0.4)
set(gca,'XTickLabel',{'G1','G2','G3','G4','G5','G6','G7','G8','G9','G10',...
    'G11','G12','G14','G16','G17','G18','G19','G20','G21','G22','G23'})

然而,当我执行此操作时,我得到了以下的图表:

enter image description here

很明显,这里的 x 轴标签是不正确的,因为第一条柱应该有 x 标签'G1',第二个应该有'G2',以此类推,直到最后一个柱应该有'G23'。
如果有人知道如何解决这个问题,我会非常、非常感激!
1个回答

7

添加以下行:

set(gca,'XTick',1:numel(publications))

在设置标签之前。

现在这要取决于你的结果图有多大,因为标签有点拥挤。 您可以调整字体大小、方向或栏之间的间隔。

可能出版物名称有点长,所以90°旋转是最好的选择,您可以找到此答案或这个链接 有帮助。

另一个建议是使用barh,并在打印后旋转:

publications = [15 12 35 12 19 14 21 15 7 16 40 28 6 13 16 6 7 22 23 16 45];
bh = barh(publications,0.4)
set(gca','XAxisLocation','top')
set(gca,'YTick',1:numel(publications))
set(gca,'YTickLabel',{'G1','G2','G3','G4','G5','G6','G7','G8','G9','G10',...
    'G11','G12','G14','G16','G17','G18','G19','G20','G21','G22','G23'})

enter image description here


2
如果您喜欢使用与90°不同的旋转角度,可能来自Matlab Central的此函数会很有用:http://www.mathworks.com/matlabcentral/fileexchange/27812-rotate-x-axis-tick-labels - Pablo EM
1
太好了!非常感谢你的帮助!真的很感激。 - Kristian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接