首页 > 解决方案 > 在 for 循环中绘制所有变量

问题描述

我想在其中绘制所有变量X_train1_raw

X_train1_raw.shape
(2039, 17)

根据:

n_splits = 5
tscv = TimeSeriesSplit(n_splits = n_splits)

plt.figure(1)
index = 1
fig, ax = plt.subplots(2, 1, figsize=(24,7))
plt.style.use('seaborn-white')
fig.suptitle('', fontsize=20)
fig.tight_layout()
for train_index, val_index in tscv.split(X_train1_raw):
    X_train1, X_val1 = prepare_data.fit_transform(X_train1_raw[train_index]), prepare_data.fit_transform(X_train1_raw[val_index])
    y_train1, y_val1 = prepare_data.fit_transform(y_train1_raw[train_index]), prepare_data.fit_transform(y_train1_raw[val_index])
    plt.subplot(510 + index)

    plt.plot(X_train1[:, 1])
    plt.plot([None for i in X_train1[:, 1]] + [x for x in X_val1[:, 1]])

    plt.plot(X_train1[:, 2])
    plt.plot([None for i in X_train1[:, 2]] + [x for x in X_val1[:, 2]])

    index +=1
plt.show();

这导致

只有第二个变量

所以只绘制了第二个变量。当我将绘图命令分配给某些轴时,它会产生一个空绘图:

fig, ax = plt.subplots(2, 1, figsize=(24,7))
(...)
for train_index, val_index in tscv.split(X_train1_raw):
    X_train1, X_val1 = prepare_data.fit_transform(X_train1_raw[train_index]), prepare_data.fit_transform(X_train1_raw[val_index])
    y_train1, y_val1 = prepare_data.fit_transform(y_train1_raw[train_index]), prepare_data.fit_transform(y_train1_raw[val_index])
    plt.subplot(510 + index)

    ax[0].plot(X_train1[:, 1])
    ax[0].plot([None for i in X_train1[:, 1]] + [x for x in X_val1[:, 1]])

    ax[1].plot(X_train1[:, 2])
    ax[1].plot([None for i in X_train1[:, 2]] + [x for x in X_val1[:, 2]])

    index +=1
plt.show();

这导致

空的

如何调整它以并行绘制所有变量?

标签: pythonmatplotlib

解决方案


我无权访问您的数据 + 我不在电脑旁进行测试。下面还是我的建议。我稍微更改了您的代码。请进行必要的调整。

使用 plt.add_subplot()

n_splits = 5
tscv = TimeSeriesSplit(n_splits = n_splits)

fig = plt.figure(figsize=(24,7))
index = 0
plt.style.use('seaborn-white')
for train_index, val_index in tscv.split(X_train1_raw):
    X_train1, X_val1 = prepare_data.fit_transform(X_train1_raw[train_index]), prepare_data.fit_transform(X_train1_raw[val_index])
    y_train1, y_val1 = prepare_data.fit_transform(y_train1_raw[train_index]), prepare_data.fit_transform(y_train1_raw[val_index])
    ax1 = fig.add_subplot(5,2,index*2+1)

    ax1.plot(X_train1[:, 1])
    ax1.plot([None for i in X_train1[:, 1]] + [x for x in X_val1[:, 1]])

    ax2 = fig.add_subplot(5,2,index*2+2)
    ax2.plot(X_train1[:, 2])
    ax2.plot([None for i in X_train1[:, 2]] + [x for x in X_val1[:, 2]])

    index +=1
plt.show()

如果有任何错误,请告诉我。


推荐阅读