Dear all, It is still the same problem. Actually my code like below :
import os import netCDF4 as nc import numpy as np import matplotlib.pylab as pl base_dir = 'C:/DATA2011/' # Note PC nc_file1 = '20110301.faifb1p16m2.nc' # Single beam data nc_file2 = '20110301.faifb1p16m3.nc' # Single beam data nc_file3 = '20110301.faifb1p16m4.nc' # Single beam data # Change directory os.chdir(base_dir) # Open netCDF file fd1 = nc.Dataset(nc_file1, 'r') fd2 = nc.Dataset(nc_file2, 'r') fd3 = nc.Dataset(nc_file3, 'r') # Read variables from the netCDF file date1 = fd1.variables['date'][:] beam1 = fd1.variables['beam'][:] az1 = fd1.variables['az'][:] ze1 = fd1.variables['ze'][:] rng1 = fd1.variables['range'][:] tim1 = fd1.variables['time'][:] pwr1 = fd1.variables['pwr'][:] dpl1 = fd1.variables['dpl'][:] nfft1 = fd1.variables['nfft'][0] pn1 = fd1.variables['pnoise'][:] # Read variables from the netCDF file date2 = fd2.variables['date'][:] beam2 = fd2.variables['beam'][:] az2 = fd2.variables['az'][:] ze2 = fd2.variables['ze'][:] rng2 = fd2.variables['range'][:] tim2 = fd2.variables['time'][:] pwr2 = fd2.variables['pwr'][:] dpl2 = fd2.variables['dpl'][:] nfft2 = fd2.variables['nfft'][0] pn2 = fd2.variables['pnoise'][:] # Read variables from the netCDF file date3 = fd3.variables['date'][:] beam3 = fd3.variables['beam'][:] az3 = fd3.variables['az'][:] ze3 = fd3.variables['ze'][:] rng3 = fd3.variables['range'][:] tim3 = fd3.variables['time'][:] pwr3 = fd3.variables['pwr'][:] dpl3 = fd3.variables['dpl'][:] nfft3 = fd3.variables['nfft'][0] pn3 = fd3.variables['pnoise'][:] # Close netCDF file fd1.close() fd2.close() fd3.close() # Speify which beam to show ibeam1 = 0 ibeam2 = 0 ibeam3 = 0 # Time convertion from seconds to hours tim1 = tim1/3600.0 tim2 = tim2/3600.0 tim3 = tim3/3600.0 # Select data of the specified beam, and transpose p_plot1 = pwr1[ibeam1] for it1 in range(len(tim1)): p_plot1[it1] = p_plot1[it1] - pn1[ibeam1][it1] - 10.*np.log10(nfft1) p_plot1 = p_plot1.transpose() # Select data of the specified beam, and transpose p_plot2 = pwr2[ibeam2] for it2 in range(len(tim2)): p_plot2[it2] = p_plot2[it2] - pn2[ibeam2][it2] - 10.*np.log10(nfft2) p_plot2 = p_plot2.transpose() # Select data of the specified beam, and transpose p_plot3 = pwr3[ibeam3] for it3 in range(len(tim3)): p_plot3[it3] = p_plot3[it3] - pn3[ibeam3][it3] - 10.*np.log10(nfft3) p_plot3 = p_plot3.transpose() # Count max SNR (single beam) pthres1 = 2.0 N_total1 = 0 N_signal1 = 0 for j in range(len(tim1)): if 18.0 <= tim1[j] <= 30.0: for i in range(len(rng1)): N_total1 = N_total1 + 1 if 200.0 <= rng1[i] <= 550 : if p_plot1[i][j] > pthres1: ipthres1 = i jpthres1 = j N_signal1 = N_signal1 + 1 # Count max SNR (single beam) pthres2 = 2.0 N_total2 = 0 N_signal2 = 0 for j in range(len(tim2)): if 18.0 <= tim2[j] <= 30.0: for i in range(len(rng2)): N_total2 = N_total2 + 1 if 200.0 <= rng2[i] <= 550 : if p_plot2[i][j] > pthres2: ipthres2 = i jpthres2 = j N_signal2 = N_signal2 + 1 # Count max SNR (single beam) pthres3 = 2.0 N_total3 = 0 N_signal3 = 0 for j in range(len(tim3)): if 18.0 <= tim3[j] <= 30.0: for i in range(len(rng3)): N_total3 = N_total3 + 1 if 200.0 <= rng3[i] <= 550 : if p_plot3[i][j] > pthres3: ipthres3 = i jpthres3 = j N_signal3 = N_signal3 + 1 fig = pl.figure() #Plot contour axs1=fig.add_subplot(3,1,1) v1 = np.linspace(0., 50., 10., endpoint=True) axs1=pl.contourf(tim1, rng1, p_plot1, v1, cmap1=pl.cm.jet) x1 = pl.colorbar(ticks=v1) print x1 # Set X and Y axis lower/upper limit set_xy1 = range(4) set_xy1[0] = 18.0 # x min set_xy1[1] = 30.0 # x max set_xy1[2] = 200.0 # y min set_xy1[3] = 550.0 # y max pl.axis(set_xy1) axs2=fig.add_subplot(3,1,2) v2 = np.linspace(0., 50., 10., endpoint=True) axs2=pl.contourf(tim2, rng2, p_plot2, v2, cmap2=pl.cm.jet) x2 = pl.colorbar(ticks=v2) print x2 # Set X and Y axis lower/upper limit set_xy2 = range(4) set_xy2[0] = 18.0 # x min set_xy2[1] = 30.0 # x max set_xy2[2] = 200.0 # y min set_xy2[3] = 550.0 # y max pl.axis(set_xy2) axs3=fig.add_subplot(3,1,3) v3 = np.linspace(0., 50., 10., endpoint=True) axs3=pl.contourf(tim3, rng3, p_plot3, v3, cmap3=pl.cm.jet) x3 = pl.colorbar(ticks=v3) print x3 # Set X and Y axis lower/upper limit set_xy3 = range(4) set_xy3[0] = 18.0 # x min set_xy3[1] = 30.0 # x max set_xy3[2] = 200.0 # y min set_xy3[3] = 550.0 # y max pl.axis(set_xy3) pl.show() # Set X and Y axis lower/upper limit set_xy1 = range(4) set_xy1[0] = 18.0 # x min set_xy1[1] = 30.0 # x max set_xy1[2] = 200.0 # y min set_xy1[3] = 550.0 # y max pl.axis(set_xy1) Could somebody help me to make the code shorter by using loop and the image only show one colorbar for three image?. Recent result : <http://matplotlib.1069221.n5.nabble.com/file/n43464/figure_1.png> -- View this message in context: http://matplotlib.1069221.n5.nabble.com/One-colorbar-for-many-plot-tp43430p43464.html Sent from the matplotlib - users mailing list archive at Nabble.com. ------------------------------------------------------------------------------ Time is money. Stop wasting it! Get your web API in 5 minutes. www.restlet.com/download http://p.sf.net/sfu/restlet _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users