Pyplot旋转标签偏移一

时间:2015-07-26 16:22:22

标签: python-2.7 matplotlib graph

刚进入matplot lib并遇到奇怪的问题 - 我正在尝试绘制10个项目,并在x轴上使用它们的名称。我跟着this suggestion并且它工作得很好,除了我的标签名称很长并且它们都被碾碎了。所以我发现你可以旋转标签,并得到以下内容:

plt.plot([x for x in range(len(df.columns))], df[df.columns[0]], 'ro',)
plt.xticks(range(10), df.columns, rotation=45)

bad plot

所有标签似乎都被勾号关闭(“Arthrobacter”应该与0对齐)。所以我认为我的索引是错误的,并尝试了一堆其他的废话来解决它,但事实证明它只是奇怪(至少对我来说)轮换的行为。如果我做rotation='vertical',我会得到我想要的东西: enter image description here

我现在看到标签的中心与蜱明显对齐,但我预计它们会在蜱上终止。像这样(在photoshop中完成): d

有没有办法自动完成?

1 个答案:

答案 0 :(得分:2)

标签不是“关闭”,标签实际上是通过“中心”放置的。在第二张图像中,相应的刻度位于标签中心上方,而不是在其端点上方。您可以通过添加修改标签水平对齐的ha='right'来更改它。

plt.plot([x for x in range(len(df.columns))], df[df.columns[0]], 'ro',)
plt.xticks(range(10), df.columns, rotation=45, ha='right')

请参阅下面的比较:

1)

plt.plot(np.arange(4), np.arange(4))
plt.xticks(np.arange(4), ['veryverylongname']*4, rotation=45)
plt.tight_layout()

i1

2)

plt.plot(np.arange(4), np.arange(4))
plt.xticks(np.arange(4), ['veryverylongname']*4, rotation=45, ha='right')
plt.tight_layout()

enter image description here