我对在python
中绘制图形非常陌生,在创建子图时遇到了麻烦。
我目前有一个循环,它将产生2个数组,然后我将它们分配给Dataframe列,并使用df.plot()
来绘制图形。这导致我每次通过循环都会得到一个不同的图。
我想试着把所有的东西都集中在一个图上。我在循环之外创建了figure对象,在循环中,我尝试了下面的代码。我知道我需要定义子图的大小,但问题是循环的数量是用户定义的。此外,关于形状-如果它是4个循环,2x2就可以了,但如果它是25,我希望它尽可能地近似一个正方形。我不确定这是不是可行。
ax = plt.subplot(i)
ax.scatter(y_df['y_pred'], y_df['y_test'])
但我一直收到以下错误:
“三位数,而不是{}".format(args))
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'])
https://stackoverflow.com/questions/56569394
复制相似问题