我想生成6个图,其中两个在一页上,所以总共3页3个面板图。我想在一个循环中做到这一点。
这是我的代码:
l=np.size(lon)
n=np.size(lat)
t=np.size(years) # where years is a list like (7039,7040,7041)
prec_avg=np.zeros((t,n,l))
prec_sum=np.zeros((t,n,l))
for y in range(0,3):
fig = plt.figure()
fig.subplots_adjust(hspace=0.4, wspace=0.2,top=0.95, right=0.95)
i=y*5
k=i+5
prec_avg[y,:,:]=np.mean(prec[i:k,:,:],axis=0)
prec_sum[y,:,:]=np.sum(prec[i:k,:,:],axis=0)
# ----- create plots -------------------------------------------------------
lon, lat = np.meshgrid(lon,lat)
ax = fig.add_subplot(211)
plt.title('mean precipitation MJJAS %i BC ' % years[y],fontsize=10)
cs = m.contourf(lon,lat,prec_avg[y,:,:],latlon=True,cmap=cm.jet,levels = np.linspace(0, 500, 30))
ax = fig.add_subplot(212)
plt.title('total precipitation MJJAS %i BC ' % years[y],fontsize=10)
cs = m.contourf(lon,lat,prec_sum[y,:,:],latlon=True,cmap=cm.jet,levels = np.linspace(0, 4000, 50))
pfile.savefig()
plt.close()
pfile.close()
对于第一个y步骤,它工作正常并且没有错误,只是在第二次跳入循环时,所以对于y = 1,它会产生错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
在我给出绘图命令的行中:
cs=m.contourf(lon,lat,prec_avg.........
我还尝试在循环中定义变量prec_avg
和prec_sum
,然后没有第一个维度并在最后删除变量,目的是重置变量并定义它在每个循环步骤中都是新的,但这也不起作用。问题必须在其他地方,也许有人可以帮助我!谢谢!
答案 0 :(得分:0)
好的,我发现了错误:
我需要在循环外执行lon,lat= np.meshgrid(lon,lat)
。否则它会使每个循环内的两个维度相乘。