我无法弄清楚如何旋转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')
9 回答
这对我有用:
Easy way
作为described here,
matplotlib.pyplot
figure
类中存在一个现有方法,可以根据您的需要自动旋转日期 .您可以在绘制数据后调用它(即
ax.plot(dates,ydata)
:如果您需要进一步格式化标签,请查看以上链接 .
Non-datetime objects
根据languitar的评论,我建议用于非日期时间
xticks
的方法在缩放等时不会正确更新 . 如果它不是用作x轴数据的datetime
对象,则应遵循Tommy's answer:试试pyplot.setp . 我想你可以这样做:
公寓从
这也是可能的:
我想出了一个类似的例子 . 同样,rotation关键字是..好吧,它是关键 .
我的答案受到cjohnson318答案的启发,但我不想提供硬编码的标签列表;我想旋转现有标签:
如果使用
plt
:如果使用pandas或seaborn进行绘图,假设
ax
为绘图的轴:另一种做法如上:
这取决于你在绘制什么 .
对于给你一个Axes对象的pandas和seaborn:
如果您需要旋转标签,您可能还需要更改字体大小,您可以使用
font_scale=1.0
来执行此操作 .