我正在创建一个在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已经消失。 有什么方法可以让整个情节适应一切......?
感谢
标记
这是代码段
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")
答案 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')