旋转xticks会导致在matplotlib中部分隐藏的刻度

时间:2011-07-15 10:19:22

标签: python matplotlib rotation label

我正在创建一个在x轴上有名字和在y轴上有时间值(分钟)的图.x轴上的名字就像

 ['cooking']18:15:27 ,['study']18:09:19,['travel']18:21:34` etc ..

其中y值是5,1,1等。我将xlabel作为'categories',ylabel作为'durations in minutes'。

由于xticks是一些长度的字符串,我决定将它们旋转90以避免重叠。现在,蜱被部分隐藏,xlabel已经消失。 plot where xticks get partially hidden and xlabel disappears 有什么方法可以让整个情节适应一切......?

感谢

标记

这是代码段

import matplotlib.pyplot as plt
...
figure = plt.figure()
barwidth = 0.25
ystep = 10
plt.grid(True)
plt.xlabel('categories')
plt.ylabel('durations in  minutes')
plt.title('durations for categories-created at :'+now)
plt.bar(xdata, ydata, width=barwidth,align='center')
plt.xticks(xdata,catnames,rotation=90)
plt.yticks(range(0,maxduration+ystep,ystep))
plt.xlim([min(xdata) - 0.5, max(xdata) + 0.5])
plt.ylim(0,max(ydata)+ystep)
figure.savefig("myplot.png",format="png")

3 个答案:

答案 0 :(得分:17)

一个好的选择是旋转刻度标签。

在您的特定情况下,您可能会发现使用figure.autofmt_xdate()(将在其他方面旋转x轴标签)很方便。

或者,您可以plt.setp(plt.xticks()[1], rotation=30)(或其他各种方式做同样的事情)。

此外,作为几年后的编辑,使用matplotlib的最新版本,您可以调用fig.tight_layout()来调整大小以适应图中的标签,如下面的@elgehelge所述。

答案 1 :(得分:14)

plt.tight_layout()

但请务必在 plt.plot()plt.bar()

之后添加此命令

答案 2 :(得分:4)

保存时设置边框也会显示标签:

figure.savefig('myplot.png', bbox_inches='tight')