mar*_*n72 13 python label matplotlib rotation
我正在创建一个在x轴上具有名称和在y轴上具有时间值(分钟)的图.x轴上的名称是相似的
['cooking']18:15:27 ,['study']18:09:19,['travel']18:21:34` etc ..
Run Code Online (Sandbox Code Playgroud)
其中y值为5,1,1等.我将xlabel作为"类别",ylabel作为"持续时间以分钟为单位".
由于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")
Run Code Online (Sandbox Code Playgroud)
Joe*_*ton 18
一个好的选择是旋转刻度标签.
在您的特定情况下,您可能会发现使用它很方便figure.autofmt_xdate()(这会将x轴标签旋转到其他位置).
或者,您可以plt.setp(plt.xticks()[1], rotation=30) (或其他各种方式做同样的事情).
此外,作为几年后的编辑,使用matplotlib的最新版本,您可以调用fig.tight_layout()调整大小以适应图中的标签,如下面的@elgehelge所述.
elg*_*lge 16
plt.tight_layout()
Run Code Online (Sandbox Code Playgroud)
但请务必在 plt.plot()或之后添加此命令plt.bar()
保存时设置边界框也会显示标签:
figure.savefig('myplot.png', bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15856 次 |
| 最近记录: |