python - 循环中的 Pandas 子图

标签 python pandas matplotlib plot

我有这段代码可以很好地在 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,我在下面进行了尝试,变化不大。

axes 具有 (2,3) 形状,我无法将正确的参数传递到最后一行 ax=axes。 理想情况下,我应该有类似 ax = axes[x][y] 的东西,其中 (x,y) 在 [(0,0), (0,1), (0,2), (1,0), (1 ,1), (1,2)] 因此具有精确的轴形状,但我只能通过枚举来获取“索引”列表......

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[j])

最佳答案

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])

关于python - 循环中的 Pandas 子图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27446455/

相关文章:

python - 在两个索引之间迭代连接字符串python

python - 使用 Seaborn FacetGrid 从数据框中绘制错误条

python - 防止双轴的网格线从原始轴绘制在艺术家之上

python - 将 nltk 图保存到 headless (headless)服务器/虚拟机上的文件

python - Pandas 替换功能错误地更改了所有数据帧

python - 缩放或平移时 X 轴刻度不会更新

python - 在 Anaconda 中安装 pyspec 模块

python - 使用 python 读取 .dat 文件

python - Django 休息框架 : @detail_route and @list_route with same name

python - 值包含分隔符的 ParserError