我不知道如何在X轴上旋转文本。这是一个时间戳,所以随着样本数量的增加,它们会越来越近,直到重叠。我想将文本旋转90度,这样当样本靠近时,它们就不会重叠。
下面是我所拥有的,除了我不知道如何旋转X轴文本外,它工作得很好。
import sys
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import datetime
font = {'family' : 'normal',
'weight' : 'bold',
'size' : 8}
matplotlib.rc('font', **font)
values = open('stats.csv', 'r').readlines()
time = [datetime.datetime.fromtimestamp(float(i.split(',')[0].strip())) for i in values[1:]]
delay = [float(i.split(',')[1].strip()) for i in values[1:]]
plt.plot(time, delay)
plt.grid(b='on')
plt.savefig('test.png')
我想到了一个类似的例子。同样,旋转关键字是..这是关键。
from pylab import *
fig = figure()
ax = fig.add_subplot(111)
ax.bar( [0,1,2], [1,3,5] )
ax.set_xticks( [ 0.5, 1.5, 2.5 ] )
ax.set_xticklabels( ['tom','dick','harry'], rotation=45 ) ;
简单的方法
如本文所述,matplotlib中有一个现有方法。Pyplot图形类,它自动为您的图形适当地旋转日期。
你可以在绘制数据之后调用它(i.e.x x.plot(dates,ydata):
fig.autofmt_xdate()
如果您需要进一步格式化标签,请签出上面的链接。
Non-datetime对象
根据languitar的评论,我为非datetime xtick建议的方法在缩放时不能正确更新等等。如果它不是用作x轴数据的datetime对象,您应该遵循Tommy的回答:
for tick in ax.get_xticklabels():
tick.set_rotation(45)
我想到了一个类似的例子。同样,旋转关键字是..这是关键。
from pylab import *
fig = figure()
ax = fig.add_subplot(111)
ax.bar( [0,1,2], [1,3,5] )
ax.set_xticks( [ 0.5, 1.5, 2.5 ] )
ax.set_xticklabels( ['tom','dick','harry'], rotation=45 ) ;