如何在'bar'图上显示所有x标签?

时间:2014-07-14 08:04:41

标签: matlab plot

我希望在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 个答案:

答案 0 :(得分:7)

添加以下行:

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

在设置标签之前。

现在它取决于你得到的情节有多大,因为标签有点紧凑。 您可以调整字体大小或方向或条形之间的间隙。

发布名称可能会稍长一些,因此90°旋转是最好的,您可能会发现this answerlink有用。

另一个建议是使用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