我知道plot_date()
,但是有bar_date()
吗?
一般的方法是使用set_xticks
和set_xticklabels
,但我希望它能够处理从几个小时到几年的时间尺度(这意味着涉及主要和次要的刻度以使内容可读)。
我正在绘制与特定时间间隔(条形图跨越的时间间隔)相关的值。下面是我使用的基本解决方案:
import matplotlib.pyplot as plt
import datetime
t = [datetime.datetime(2010, 12, 2, 22, 0), datetime.datetime(2010, 12, 2, 23, 0),
datetime.datetime(2010, 12, 10, 0, 0), datetime.datetime(2010, 12, 10, 6, 0)]
y = [4, 6, 9, 3]
interval = 1.0 / 24.0 #1hr intervals, but maplotlib dates have base of 1 day
ax = plt.subplot(111)
ax.bar(t, y, width=interval)
ax.xaxis_date()
plt.show()
2条答案
按热度按时间mznpcxlj1#
plot_date
所做的就是绘制函数和调用ax.xaxis_date()
。你需要做的就是:
bbuxkriu2#
在matplotlib的新版本(例如3.7.1)中,
plt.plot()
和plt.bar()
可以直接处理datetime输入,不需要使用date2num
等。在OP和@Joe Kington的回答中,使用了
xaxis_date()
。如果传递给x轴的数据已经是datetime(如上面的代码),则不需要使用xaxis_date()
。但如果作为x-data传递的数据是数值,但您希望将其视为datetime,则需要使用xaxis_date()
。