如何在一个循环中建立熊猫数据框的子图?

时间:2019-06-25 18:51:36

标签: python-3.x pandas matplotlib

我想创建一个函数来创建类似变量的子数据帧(通过正则表达式)。接下来,将这些子数据帧中的每一个作为子图绘制在图中的轴上。该函数输出所有子图的图形和轮廓,但未绘制任何数据。

我浏览了网站上的几篇文章,包括“循环中的熊猫子图”和“具有for循环的子图”。我用相似主题搜索的问题有非常不同的问题。

def plot_macro_trend_cycle(df):
        fig = plt.figure(figsize=(12,8)) 
        for col,num in zip(df.columns,range(1,len(df.columns)+1)):

            df0 =pd.DataFrame(df.filter(regex = '{}'.format(col)), index = df.index)
            ax = fig.add_subplot(round((len(df.columns)/2)),2,num)
            ax.set_ylabel('{}'.format(col))  
            ax.set_xlabel('{}'.format(col))
            ax.set_title('{}'.format(col), pad=20)
        df0.plot(y = [df0.columns[0],df0.columns[1]], linewidth=0.5, ax=ax,legend=None)
        plt.tight_layout()
        plt.show()

这是我收到的错误的图片。 enter image description here

1 个答案:

答案 0 :(得分:0)

您正在df0循环的每次迭代中定义一个新的for变量,并且仅在循环之后绘制最后一个df0数据帧。在循环内缩进df0.plot()行。