我在这个问题上发现了很多问题,但我仍然无法理解在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()
答案 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()