我有一个时间序列,它是从积分时间步长为 1 分钟的数值模拟中获得的。这个时间序列跨越几个月,我想在 x 轴上使用日期。集成结束后,我将与第一天相对应的纪元时间添加到创建为的时间 numpy 数组中
tt = np.arange(0.0, number_of_days, minute)
我每 10 分钟 ( ) 只收集一次数据点tt[::10]
。'%Y-%m-%d %H:%M:%S'
我通过这个数组转换为日期格式
dtime = np.empty(len(tt[::10]), dtype="S19")
for ind, t in enumerate(tt[::10]):
daytime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(t))
dtime[ind] = datetime.strptime(daytime, '%Y-%m-%d %H:%M:%S')
print(dtime)
结果是:
[b'2020-01-22 00:00:00' b'2020-01-22 00:10:00' b'2020-01-22 00:20:00' ...
b'2020-06-29 23:30:00' b'2020-06-29 23:40:00' b'2020-06-29 23:50:00']
我将 xticks 格式化为:
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
plt.gca().xaxis.set_major_locator(mdates.WeekdayLocator())
plt.gca().xaxis.set_minor_locator(mdates.DayLocator())
我用以下方法绘制这些数据:
plt.plot_date(dtime, Y)
plt.gcf().autofmt_xdate()
如果我只使用plt.plot
. 不幸的是,我没有得到任何日期。日期似乎没有正确格式化为日期时间格式,以便 matplotlib 理解它。我怀疑这个问题与 dtime 有关,我认为它不应该是字符串类型的。结果是
我想用这张图绘制这个时间序列,它每天有一个数据点。
我在这里有第二个相关问题:如何设置每两周一次的主要刻度?