使用Matplotlib绘图时,如何获得正确的Pandas系列索引



我想用Matplotlib绘制Pandas系列,但我得到了错误消息:

不支持

索引类型。

这是我的代码:

inputX = values_dataset[:,:-horizon]
inputX = inputX.reshape(inputX.shape[0], time_steps, dim)
yhat = model.predict(inputX)
yhat = scalery.inverse_transform(yhat)
series_actual = series.loc[Syhat.index[0]:Syhat.index[-1]]
Syhat_native = {}
if get_transform_status(target_var) == 1:
for i in range(horizon):
Syhat_horizoni = pd.Series(yhat[:,i], index= train_val_test_time).iloc[i:]

series_shift = series_actual.shift(i).dropna()
Syhat_native[i] = inv_diff(series_shift, Syhat_horizoni, 12)
else:
for i in range(horizon):
# The code goes here
Syhat_horizoni = pd.Series(yhat[:,i], index= train_val_test_time)
Syhat_native[i] = Syhat_horizoni.shift(i)

这是我想要绘图时的代码:

#now we plot the 
if horizon>1:
fig, ax = plt.subplots(1, horizon, figsize=[horizon*10,5])
for i in range(horizon):
Syactual_horizoni= series_actual.shift(i)
Syactual_horizoni.plot(ax=ax[i], color='b',label = 'actual')

# This line below where the error occured
Syhat_native[i].plot(ax=ax[i], color='r', label = 'pred')
ax[i].set_title('horizon-'+str(i))
ax[i].legend()
ax[i].axvline(train_time[-1])

#     fig.savefig("./visualization/LSTM-bidirectional-Covid-h14/LSTM-Bidirectional-Covid-Transformed-1.png")
fig.suptitle('TRAIN+TEST SET inversed',fontsize=20 )

我错过了什么吗?

我已经得到了答案,Syhat_native系列索引不是日期时间格式的。所以我做了这个

inputX = values_dataset[:,:-horizon]
inputX = inputX.reshape(inputX.shape[0], time_steps, dim)
yhat = model.predict(inputX)
yhat = scalery.inverse_transform(yhat)
series_actual = series.loc[Syhat.index[0]:Syhat.index[-1]]
Syhat_native = {}
if get_transform_status(target_var) == 1:
for i in range(horizon):
Syhat_horizoni = pd.Series(yhat[:,i], index= train_val_test_time).iloc[i:]

series_shift = series_actual.shift(i).dropna()
Syhat_native[i] = inv_diff(series_shift, Syhat_horizoni, 12)
else:
for i in range(horizon):
# The code goes here
Syhat_horizoni = pd.Series(yhat[:,i], index= train_val_test_time)

Syhat_native[i] = Syhat_horizoni.shift(i)
Syhat_native[i].index = pd.to_datetime(Syhat_native[i].index)

最新更新