我有一个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)