Я очень плохо знаком с графикой в python
, и у меня возникают проблемы при создании подзаговора.
В настоящее время у меня есть цикл, который будет производить 2 массива, которые я затем назначаю столбцам Dataframe и использую df.plot()
для графика.Это приводит к тому, что я получаю новый сюжет каждый раз в цикле.
Я хотел попробовать все на одном участке.Я создал объект figure вне моего цикла, и в цикле я пробовал приведенный ниже код.Я знаю, что мне нужно определить размер подзаговора, но проблема в том, что количество циклов определяется пользователем.Кроме того, что касается формы - если это 4 петли, 2x2 будет хорошо, но если это 25, я бы хотел попытаться максимально приблизить квадрат.Не уверен, что это выполнимо.
ax = plt.subplot(i)
ax.scatter(y_df['y_pred'], y_df['y_test'])
, но я продолжал получать следующую ошибку:
"трехзначное число, а не {}". Формат (args [0]))
ValueError: целочисленная спецификация подплота должна быть трехзначным числом, а не 1
Вот мой полный код.Я удалил много не относящихся к делу строк, чтобы было легче следить:
fig = plt.figure()
tscv = TimeSeriesSplit(n_splits=self.no_splits)
for train_index, test_index in tqdm(tscv.split(X)):
X_train, X_test = X.iloc[train_index], X.iloc[test_index]
y_train, y_test = y.iloc[train_index], y.iloc[test_index]
self.regressor.fit(X_train, y_train.ravel())
# predict y values
y_pred = self.regressor.predict(X_test)
# plot y_pred vs y_test
y_df = pd.DataFrame()
y_pred = y_pred.reshape(len(y_pred), )
y_test = y_test.reshape(len(y_test), )
y_df['y_pred'] = y_pred
y_df['y_test'] = y_test
ax = plt.subplot(i)
ax.scatter(y_df['y_pred'], y_df['y_test'])