为了账号安全,请及时绑定邮箱和手机立即绑定

在python matplotlib中旋转轴文本

在python matplotlib中旋转轴文本

繁华开满天机 2019-08-30 18:00:10
我无法弄清楚如何旋转X轴上的文本。它是一个时间戳,随着样本数量的增加,它们越来越近,直到它们重叠。我想将文本旋转90度,以便样本靠近在一起,它们不重叠。下面是我的,它工作得很好,除了我无法弄清楚如何旋转X轴文本。import sysimport matplotlibmatplotlib.use('Agg')import matplotlib.pyplot as pltimport datetimefont = {'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')
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

简单的方法


如此处所述,类中存在一种现有方法,matplotlib.pyplot figure可以根据您的需要自动旋转日期。


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


fig.autofmt_xdate()

如果您需要进一步格式化标签,请查看以上链接。


非日期时间对象


根据languitar的评论,我建议用于非日期时间的方法xticks在缩放等时不会正确更新。如果它不是datetime用作x轴数据的对象,你应该按照Tommy的回答:


for tick in ax.get_xticklabels():

    tick.set_rotation(45)


查看完整回答
反对 回复 2019-08-30
?
动漫人物

TA贡献1815条经验 获得超10个赞

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


x = range(len(time))

plt.xticks(x,  time)

locs, labels = plt.xticks()

plt.setp(labels, rotation=90)

plt.plot(x, delay)


查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 1269 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信