刚进入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)
所有标签似乎都被勾号关闭(“Arthrobacter”应该与0对齐)。所以我认为我的索引是错误的,并尝试了一堆其他的废话来解决它,但事实证明它只是奇怪(至少对我来说)轮换的行为。如果我做rotation='vertical'
,我会得到我想要的东西:
我现在看到标签的中心与蜱明显对齐,但我预计它们会在蜱上终止。像这样(在photoshop中完成):
有没有办法自动完成?
答案 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()
2)
plt.plot(np.arange(4), np.arange(4))
plt.xticks(np.arange(4), ['veryverylongname']*4, rotation=45, ha='right')
plt.tight_layout()