嵌套循环中的Matplotlib子图

时间:2018-04-12 17:42:15

标签: python matplotlib subplot

我有一个python子情节问题。我有一个绘制数据的绘图功能

稍后我将该函数作为另一个循环中的循环的一部分。我想将内部循环中的所有图表绘制为子图 - 1个图表包含外部循环中每个元素的多个图表。例如,我的外循环有5个值(早上,晚上,下午,晚上,晚上),内循环有6个值(记录,计数,平均值,平均值,位置,平均值) - 现在我得到5X6 = 30个图表..但是我只想要5个图表 - 每个图表一个(上午,下午,下午,晚上,晚上),5个图表中的每个图表有6个子图(记录,计数,平均,平均,位置,平均)。

这是情节函数

def plot(self, fname='plot_content.png', prelog=False):

    results = self.stored_vals.copy()

    if prelog:
        results = np.exp(results)

    fig= plt.figure()
    ax = fig.add_subplot(111)
    colors = ['b' if c else 'r' for c in (results['used']==results['original']).values]
    ax.set_title('Number of Records')
    ax.scatter(results.index, results['original'], c=colors, lw=0, s=25., label='observed')
    results['predicted'].plot(ax=ax, color='g', label='rolling one-step out-of-sample forecast', lw=3.)
    ax.fill_between(results.index, results['low_b'], results['high_b'], alpha=.3, color='g')
    legend = ax.legend(loc='upper left')
    plt.savefig(fname, format='png')
    plt.close()

这是我在做循环并调用它的地方 for ref dayparts =(早上,晚上,下午,晚上,晚上) df11cols =(记录,计数,平均,avglen,loccnt,avgduration)

for daypart in df11['dayparts'].unique():
    df_dp = df11[df11['dayparts']==daypart]
    indexed_df = df_dp.set_index('dt')

    for measure in df11cols:

        ts = indexed_df[measure].sort_index()

        #ts = np.log(ts)

        sizeall=len(ts)
        size =sizeall- int(sizeall/4)
        train, test = ts[:size], ts[size:]

        var = OutlierDetection1D(train, arima_params=(1,1,0))

        var.run(test)
        print measure+' '+daypart
        results = var.stored_vals
        results.loc[:,'is_anomaly'] = (results['used']<>results['original'])
        colors = ['b' if c else 'r' for c in (results['used']==results['original']).values]
        results.loc[:,'colors']=colors

        print results[(~results.predicted.isnull()) & (results.colors=='r')]
        fname = 'ts_%s_%s.png'%(measure,daypart)
        #var.plot(fname, prelog=True)
        var.plot(fname)

0 个答案:

没有答案