我试图绘制一些日期时间数据,但我有两个问题我无法解决。我的代码如下:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from datetime import datetime as DT
import numpy as np
%matplotlib inline
dt = np.dtype([('date', 'datetime64[D]'), ('count', np.uint32)])
data = np.array([(np.datetime64('2014-12-' + str(i)), i) for i in range(11,20)], dtype=dt)
fig, ax = plt.subplots(figsize=(18,8), dpi=300)
ax.plot_date(data['date'], data['count'])
#ax.set_xlim( [mdates.date2num( (data['date'][0] - np.timedelta64(1, 'D')).astype(DT) ),
mdates.date2num( (data['date'][-1] + np.timedelta64(1, 'D')).astype(DT) )]);
在最后一行注释掉后,我得到了一个情节,但x标签移到了1天的右边。
当我尝试将x限制设置为数据第一天之前的一天以及数据最后一天之后的那天,正确设置了限制但我丢失了数据点
答案 0 :(得分:1)
我复制了你看到的行为,看来matplotlib无法识别numpy datetime64类型。
这很有效 - 将np.datetime64转换为标准的python datetime对象:
import datetime
ax.plot_date([d.astype(datetime.datetime) for d in data['date']], data['count'])