matplotlib中日期时间图的问题

时间:2014-12-12 13:55:38

标签: python numpy matplotlib

我试图绘制一些日期时间数据,但我有两个问题我无法解决。我的代码如下:

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) )]);
  1. 在最后一行注释掉后,我得到了一个情节,但x标签移到了1天的右边。
    enter image description here

  2. 当我尝试将x限制设置为数据第一天之前的一天以及数据最后一天之后的那天,正确设置了限制但我丢失了数据点 enter image description here

1 个答案:

答案 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'])