http://matplotlib.1069221.n5.nabble.com/Can-t-plot-NCEP-reanalysis-data-td42970.html
import netCDF4 as nc
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy as np
pylab.rcParams['figure.figsize'] = (10.0, 10.0)
url='http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis.derived/pressure/omega.mon.mean.nc'
f = nc.Dataset(url)
fv = f.variables
print fv['omega']
<type 'netCDF4.Variable'> int16 omega(time, level, lat, lon) long_name: Monthly Mean of Omega actual_range: [-0.49596989 0.78370774] units: Pascal/s add_offset: 29.765 scale_factor: 0.001 missing_value: 32766 precision: 3 least_significant_digit: 3 var_desc: Omega (dp/dt) dataset: CDC Derived NCEP Reanalysis Products level_desc: Multiple levels statistic: Mean parent_stat: Other unpacked_valid_range: [-3. 7.] valid_range: [-32765 -22765] unlimited dimensions: time current shape = (794, 12, 73, 144)
omg = f.variables['omega'][2,5,:,:]
lon = f.variables['lon'][:]
lat = f.variables['lat'][:]
times = f.variables['time'][:]
# Set up a map
map = Basemap(projection='cyl',llcrnrlat=0.,urcrnrlat=10.,llcrnrlon=97.,urcrnrlon=110.,resolution='i')
x,y=map(*np.meshgrid(lon,lat))
map.drawcoastlines()
map.drawcountries()
map.drawparallels(np.arange(-90.,90.,3),labels=[1,0,0,0],fontsize=10)
map.drawmeridians(np.arange(-180.,180.,3),labels=[0,0,0,1],fontsize=10)
#contour data
#clevs=np.arange(0.,1.,0.1) # contour interval
#cs = map.contourf(x,y,omg,clevs,extent='both')
cs = map.contourf(x,y,omg,20,extent='both')
cb = map.colorbar(cs,'bottom',size='2%',pad="5%") #plot the colorbar
cb.set_label('m/s')
plt.title('Omega-test');