使用NaN值绘制matplotlib中的日期

时间:2017-05-22 23:22:38

标签: python datetime matplotlib

我在这个问题上发现了很多问题,但我仍然无法理解在python中绘制日期信息的基本步骤。

我的时间序列是

 >>> datetime_series.shape
(8736,)
>>> datetime_series
array([datetime.datetime(1979, 1, 2, 0, 0),
       datetime.datetime(1979, 1, 2, 1, 0),
       datetime.datetime(1979, 1, 2, 2, 0), ...,
       datetime.datetime(1979, 12, 31, 21, 0),
       datetime.datetime(1979, 12, 31, 22, 0),
       datetime.datetime(1979, 12, 31, 23, 0)], dtype=object)

我的数据是

 >>> data.shape
(8736,)   
#contains np.nan values!!! 

我的代码现在(我的评论是我试过的......)

fig,ax1 = plt.subplots()
plt.plot(datetime_series,data)
#plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d-%m'))
#plt.gca().xaxis.set_major_locator(mdates.DayLocator())
#plt.gcf().autofmt_xdate()
#ax1.set_xlim([datetime_series[0],datetime_series[-1])
ax1.set_ylabel('Cumulative windspeed over open water [m/s]')
#ax1.set_xlim( ### how do I do this??
plt.title('My title')
fig.tight_layout()
plt.show()

这会产生一个空白图。

如果有人可以指导我完成绘制日期时间的步骤,我只是不明白从哪里开始,因为看起来文档和stackoverflow答案都有不同的方法..(例如,使用plot_date对比只是plt.plot()

1 个答案:

答案 0 :(得分:1)

我不确定为什么你的数据没有被绘图 - 它甚至可以用于NaN值。查看此示例,您可以查看数据 datetime_series ,了解它们与您的数据的比较情况。正如评论中所述,有一个关于如何在matplotlib中使用日期的官方示例 - 这肯定值得一看。

import matplotlib.pyplot as plt
import datetime
import numpy as np

# Generate some dummy data
N = 500
year = np.random.randint(1950,2000,N)
month = np.random.randint(1,12,N)
day = np.random.randint(1,28,N)

datatime_series = np.array([datetime.datetime(*(dd+(0,0))) for dd in zip(year, month, day)])
datatime_series.sort()

data = np.random.random(N)*20000 + (np.linspace(1950,2000,N)/10.)**2

# Now add some NaNs
for i in np.random.randint(0,N-1,int(N/10)):
    data[i]=np.nan

fig, ax = plt.subplots(1)
ax.plot(datatime_series, data)
ax.set_ylim(0,1.2*ax.get_ylim()[1])
fig.autofmt_xdate()
fig.show()

enter image description here