圈养Pandas

2024-05-23 15:02:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这段代码,它能很好地在1行6列中绘制我的图 我试图用2x3或3x2来绘制,但没有成功 pandas的.plot()实现中是否缺少一些内容? plot 1 by 6

fig, axes = plt.subplots(nrows=1, ncols=6)
spfvL = [6, 11, 22, 33, 44, 55]
for j, i in enumerate(spfvL):
    df['spfv' + str(i)] = pd.rolling_std(df['r VIX'], i)*np.sqrt(252)
    res = smf.ols(formula='spfv'+ str(i)+' ~ Q(\'VIX Index\')', data=df).fit()
    df['pred'+ str(i)] = better_predict(res, df)
    df.loc[:,['pred' + str(i), 'spfv' + str(i)]].plot(ax=axes[j])

编辑:为了得到2x3,我在下面尝试了一下,没有太大改变。

轴有一个(2,3)形状,我无法将正确的参数传递到最后一行ax=axes。 理想情况下,我应该有类似ax=axis[x][y]的值,其中(x,y)在[(0,0),(0,1),(0,2),(1,0),(1,1),(1,2)],这样就有了轴的精确形状,但是我只需要枚举就可以得到“索引”列表。。。在

^{pr2}$

Tags: 代码pandasdfplot绘制resax形状
3条回答

axes是一个ndarray,我需要一种通过索引访问它的方法,幸运的是,flat方法就做到了这一点。在

fig, axes = plt.subplots(nrows=2, ncols=3)
spfvL = [6, 11, 22, 33, 44, 55]
for j, i in enumerate(spfvL):
    df['spfv' + str(i)] = pd.rolling_std(df['r VIX'], i) * np.sqrt(252)
    res = smf.ols(formula='spfv'+ str(i)+' ~ Q(\'VIX Index\')', data=df).fit()
    df['pred'+ str(i)] = better_predict(res, df)
    df.loc[:, ['pred' + str(i), 'spfv' + str(i)]].plot(ax=axes.flat[j])

同样,您也可以:

for i, ax in enumerate(axes.reshape(-1)):
     df[spfvL[i]].plot(ax=ax)

或者,您可以在循环中添加子批次:

fig = plt.figure(figsize=(15, 10))
for j, i in enumerate(spfvL):
    fig.add_subplot(2, 3, i+1)
    df.loc[:, ['pred' + str(i), 'spfv' + str(i)]].plot(ax=axes.flat[j])

相关问题 更多 >