在python matplotlib中旋转轴文本
我无法弄清楚如何旋转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')
简单的方法
如此处所述 , matplotlib.pyplot
figure
类中存在一个现有的方法,可以自动为您的date自动旋转date。
你可以调用它后,你绘制你的数据(即ax.plot(dates,ydata)
:
fig.autofmt_xdate()
如果您需要进一步格式化标签,请检查以上链接。
非date时间的对象
根据languitar的评论,我提出的非datetime xticks
的方法在缩放等时不会正确更新。如果它不是一个用作x轴数据的datetime
对象,你应该遵循Tommy的回答 :
for tick in ax.get_xticklabels(): tick.set_rotation(45)
这适用于我:
plt.xticks(rotation=90)
尝试pyplot.setp。 我想你可以做这样的事情:
x = range(len(time)) plt.xticks(x, time) locs, labels = plt.xticks() plt.setp(labels, rotation=90) plt.plot(x, delay)
我想出了一个类似的例子。 再次,旋转关键字是..好吧,这是关键。
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 ) ;
我的答案受cjohnson318的回答启发,但我不想提供硬编码的标签列表; 我想旋转现有的标签:
for tick in ax.get_xticklabels(): tick.set_rotation(45)
公寓从
plt.xticks(rotation=90)
这也是可能的:
plt.xticks(rotation='vertical')
import pylab as pl pl.xticks(rotation = 90)