python matplotlib中的旋转轴文本

2024-04-26 05:11:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道如何在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')

Tags: in文本importfordatetimetimematplotlibplt
3条回答

试试pyplot.setp。我想你可以这样做:

x = range(len(time))
plt.xticks(x,  time)
locs, labels = plt.xticks()
plt.setp(labels, rotation=90)
plt.plot(x, delay)

简单方法

作为described here,在matplotlib.pyplotfigure类中有一个现有的方法,它会根据您的图形自动旋转日期。

您可以在绘制数据后调用它(即ax.plot(dates,ydata)

fig.autofmt_xdate()

如果需要进一步格式化标签,请签出上面的链接。

非日期时间对象

根据languitar的注释,我为非datetimexticks建议的方法在缩放等时不会正确更新。如果不是用作x轴数据的datetime对象,则应遵循Tommy's answer

for tick in ax.get_xticklabels():
    tick.set_rotation(45)

这对我有效:

plt.xticks(rotation=90)

相关问题 更多 >