我想把我的意志强加于这个matplotlib图上。当我设置ax1.xaxis.set_major_formatter(myFmt)
时,它工作得很好,就像在upper graph中一样。
但是,当我添加ax1.set_xticklabels((date),rotation=45)
时,时间格式将恢复为matplotlib时间,就像在lower graph中一样。在
两者都使用相同的输入时间变量。我不仅尝试了时间格式的改变
date_1 = np.vectorize(dt.datetime.fromtimestamp)(time_data) # makes a datetimeobject from unix timestamp
date = np.vectorize(mdates.date2num)(date_1) # from datetime makes matplotib time
myFmt = mdates.DateFormatter('%d-%m-%Y/%H:%M')
ax1 = plt.subplot2grid((10,3), (0,0), rowspan=4, colspan=4)
ax1.xaxis_date()
ax1.plot(date, x)
ax1.xaxis.set_major_formatter(myFmt)
ax1.set_xticklabels((date),rotation=45)#ignores time format
有没有办法把定制的时间格式强制到xticklabels上?但是可以直接读取变量的格式吗?特别是如果您以后想在自定义日期位置添加xtick。在
所有的想法都值得赞赏。干杯
您可以通过将
datetime
对象转换为字符串来强制时间格式。在如果日期是utc格式,则必须对其进行特殊处理:
定位器指定记号的位置。格式化程序在这些位置格式化tickLabel。使用格式化程序,比如
因此效果很好。但是,在指定格式化程序之后使用
set_xticklabels
,将删除DateFormatter并用FixedFormatter
替换它。因此,您将在自动选择的位置获得ticklabels,但标签与这些位置不对应。因此,图形的标签将不正确。 因此,您应该在不指定自定义定位器的情况下使用set_xticklabels
,例如通过set_xticks
。在这里根本不需要使用
^{pr2}$set_xticklabels
。光是格式化程序就足够了。在好吧,我想我现在明白了。在
我不知道为什么向量化不起作用,但是一个接一个地记录每个日期会消除数组给我的错误源。在
@iDrwish:再次感谢你把我推向正确的方向。在
相关问题 更多 >
编程相关推荐