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

matplotlib中的日期刻度和旋转

matplotlib中的日期刻度和旋转

慕桂英3389331 2019-08-31 15:09:36
我有一个问题试图让我的日期刻度在matplotlib中旋转。下面是一个小样本程序。如果我尝试在末尾旋转刻度线,则刻度线不会旋转。如果我尝试旋转注释'崩溃'下显示的刻度,则matplot lib崩溃。只有当x值是日期时才会发生这种情况。如果我用调用中dates的变量替换变量,则调用在内部工作正常。tavail_plotxticks(rotation=70)avail_plot有任何想法吗?import numpy as npimport matplotlib.pyplot as pltimport datetime as dtdef avail_plot(ax, x, y, label, lcolor):    ax.plot(x,y,'b')    ax.set_ylabel(label, rotation='horizontal', color=lcolor)    ax.get_yaxis().set_ticks([])    #crashes    #plt.xticks(rotation=70)    ax2 = ax.twinx()    ax2.plot(x, [1 for a in y], 'b')    ax2.get_yaxis().set_ticks([])    ax2.set_ylabel('testing')f, axs = plt.subplots(2, sharex=True, sharey=True)t = np.arange(0.01, 5, 1)s1 = np.exp(t)start = dt.datetime.now()dates=[]for val in t:    next_val = start + dt.timedelta(0,val)    dates.append(next_val)    start = next_valavail_plot(axs[0], dates, s1, 'testing', 'green')avail_plot(axs[1], dates, s1, 'testing2', 'red')plt.subplots_adjust(hspace=0, bottom=0.3)plt.yticks([0.5,],("",""))#doesn't crash, but does not rotate the xticks#plt.xticks(rotation=70)plt.show()
查看完整描述

3 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

如果您更喜欢非面向对象的方法,请在两次avail_plot调用之前将plt.xticks(rotation = 70)移到右侧,例如


plt.xticks(rotation=70)

avail_plot(axs[0], dates, s1, 'testing', 'green')

avail_plot(axs[1], dates, s1, 'testing2', 'red')

这会在设置标签之前设置rotation属性。由于这里有两个轴,因此在制作完两个图之后,plt.xticks会变得混乱。而此时plt.xticks不会做任何事情的地步,plt.gca()并没有给你作用于当前坐标要修改的轴,所以plt.xticks,是行不通的。


对于不使用plt.xticks的面向对象方法,您可以使用


plt.setp( axs[1].xaxis.get_majorticklabels(), rotation=70 )

在两次avail_plot调用之后。这样就可以在正确的轴上设置旋转。


查看完整回答
反对 回复 2019-08-31
?
大话西游666

TA贡献1817条经验 获得超14个赞

解决方案适用于matplotlib 2.1+


存在tick_params可以改变刻度属性的轴方法。它也作为轴方法存在set_tick_params


ax.tick_params(axis='x', rotation=45)

要么


ax.xaxis.set_tick_params(rotation=45)

作为旁注,当前的解决方案通过使用命令将状态接口(使用pyplot)与面向对象的接口混合plt.xticks(rotation=70)。由于问题中的代码使用面向对象的方法,因此最好始终坚持使用该方法。该解决方案确实提供了一个很好的显式解决方plt.setp( axs[1].xaxis.get_majorticklabels(), rotation=70 )


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

添加回答

举报

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