畫出來效果是這樣的
好美對不對?
左邊和右邊的圖對應的colorbar是不同的。
如果每一個子圖也畫一個colorbar那會很浪費空間,所以在最底下的地方畫colorbar,因此要自己手動設colorbar的位置,主要是用這個參數cax=plt.axes([0.65, 0.06, 0.3, 0.02])
不多說了,上代碼了。
def manycs2(): N1=7 N2=2 ww = 0.4 hh = 0.12 for i_hour in range(0,25,1): fig=plt.figure() for i1 in range(0,N1): for i2 in range(0,N2): print(i_hour,i1,i2) da=nc.Dataset("C:\\Users\\kong\\PycharmProjects\\southcnseapycode\\crosssection\\4draw_crosssection_%d"%(i1+1)) u=da.variables["u"][:] v=da.variables["v"][:] z=da.variables["z"][:] w=da.variables["w"][:] llj=da.variables["llj"][:] lat=da.variables["lat"][:] lon=da.variables["lon"][:] lon001=da.variables["lon001"][:] lat001=da.variables["lat001"][:] theta=da.variables["theta"][:] da.close() uv1=u*np.cos(theta)+v*np.sin(theta)##x uv2=-u*np.sin(theta)+v*np.cos(theta)##y lonlon=np.zeros((np.shape(z)[1],np.shape(lon)[0])) for i in range(0,np.shape(z)[1]): lonlon[i,:]=lon #--u--# a = fig.add_axes([0.075+i2*ww, 0.10 + i1*hh, ww, hh]) if i2==0: cslev = np.arange(-6,7,1)#13 cs=plt.contourf(lonlon,z[i_hour,:,:],uv1[i_hour,:,:],cslev,cmap=cm.coolwarm,extend='both') else: cslev = np.arange(0,10,1)#13 cs=plt.contourf(lonlon,z[i_hour,:,:],uv2[i_hour,:,:],cslev,cmap=cm.coolwarm,extend='both') cs.cmap.set_over('k') cs.cmap.set_under('b') #cbar = plt.colorbar(cs) #cbar.set_label('u\'(m/s)') plt.ylim([0,4000]) if i2==0: plt.yticks([0,1000,2000,3000],size=10) else: plt.yticks([],size=10) plt.xticks(size=5) ##--vector--## vectorsize=5 rho=3 Q = plt.quiver(lonlon[:,::rho],z[i_hour,:,::rho],uv1[i_hour,:,::rho],100000*w[i_hour,:,::rho],width=vectorsize,headwidth=vectorsize*2/3,headlength=vectorsize/2,headaxislength=vectorsize/2,minlength=0,units='dots',angles='xy', scale_units='xy', scale=100,minshaft=0.5)#100 if i1==6: if i2==0: cbar=fig.colorbar(cs,orientation='horizontal',cax=plt.axes([0.05, 0.06, 0.3, 0.02])) fig.text(0.35, 0.03,'u\'(m/s)',size=15) else: cbar=fig.colorbar(cs,orientation='horizontal',cax=plt.axes([0.65, 0.06, 0.3, 0.02])) fig.text(0.55, 0.03,'v\'(m/s)',size=15) if i_hour==24: fig.text(0.4, 0.95,"average",size=20) elif i_hour+7<24: fig.text(0.4, 0.95,"%d UTC, %d localtime"%(i_hour,i_hour+7),size=20) else: fig.text(0.4, 0.95,"%d UTC, %d localtime"%(i_hour,i_hour+7-24),size=20) fig.text(0.45, 0.03,"lon",size=30) plt.savefig('C:\\Users\\kong\\PycharmProjects\\southcnseapycode\\crosssection\\crosssection%d hour'%i_hour,dpi=500) plt.close()