我想创建一个包含以嵌套“ for”循环处理的12个图形/子图的pdf。
这12个数字是由应用于3个不同变量(3 * 4 = 12)的4个度量得出的。
这是我正在使用的代码:
#########VARIABLES#############################
df = pd.read_csv('scores.csv',delimiter=',')
sta='Jony'
cvars=['Qle','Qh','NEE']
exps=['ctr','lai']
expsC={'ctr':'k','lai':'b'}
stats=['MBE','SD','NME','pcorr']
##################FUNCTION#########################
def extract_score(df,station,cvar,exp,score):
a=df[(df.station == station) & (df.cvar == cvar) &
(df.exp == exp) ]
return a[score].values[0]
def extract_score_exp(df,station,cvar,score,expS=None):
out=[]
if expS is None:
exps=np.unique(df.exp)
else:
expsf=np.unique(df.exp)
exps=[]
for ee in expsf:
if expS in ee:
exps.append(ee)
for exp in exps:
out.append(extract_score(df,station,cvar,exp,score))
return exps,out
def get_val_exp(exps,pos=1):
return [float(bb.split('_')[pos]) for bb in exps]
#####################PLOT###################################
for j,cvar in enumerate(cvars):
fig=plt.figure()
ax1 = plt.subplot2grid((3,1), (j,0))
for i,stat in enumerate(stats):
ax2 = plt.subplot2grid((1,4), (0,i))
for exp in exps:
xscore0=extract_score(df,sta,cvar,exp,stat)
xx0=250
expsP,xscore=extract_score_exp(df,sta,cvar,stat,expS='_'+exp)
xx=get_val_exp(expsP)
ax2.plot(xx,xscore,'.',c=expsC[exp])
ax2.plot(xx0,xscore0,'x',c=expsC[exp])
ax.set_title(stat,fontsize=8)
plt.show()
plt.savefig('/home/david/test_pals/result/output/test.pdf')
plt.close()
代码运行正常,´plt.show()'命令实际上显示了我想要的内容,如下图所示:
但是不幸的是,“ plt.savefig”命令只是保存了最后生成的1 * 4子图:
我在循环中为“ plt.savefig”尝试了其他位置,但没有成功将4 * 3数字保存在一个pdf中。有人指出为什么吗?