I am trying to plot precipitation data, from a netCDF4 file, on a basemap using python 3.6. The code that I am using has worked perfectly on a very similar data set. The only difference being that the previous precip data was in 'cm' while the data that I am currently trying to plot is in 'kg m-2 s-1'. The variables found in this file are time, time_bnds, lat, lat_bnds, lon, lon_bnds, and pr. pr is the precipitation variable and the one I an interested in plotting.
Here is my code
from mpl_toolkits.basemap import Basemap, cm
from netCDF4 import Dataset as NetCDFFile
import matplotlib.pyplot as plt
nc = NetCDFFile('filename.nc','r')
p = nc.variables['prc']
data = p[:,:,0]
fig = plt.figure(figsize=(8,8))
ax = fig.add_axes([0.1,0.1,0.8,0.8])
m = Basemap(projection='cyl',lon_0=180,lat_0=0,resolution='l')
m.drawcoastlines()
m.drawstates()
m.drawcountries()
ny = data.shape[0]; nx = data.shape[1]
lons, lats = m.makegrid(nx,ny)
x,y = m(lons, lats) # compute map proj coordinates.
cs=plt.contourf(x,-y,data*2592000,range(0,1000,10),cmap=cm.s3pcpn,latlon=True)
#data is multiplied by the amount of seconds in a month
cbar = m.colorbar(cs,location='bottom',pad="5%")
cbar.set_label('mm')
plt.show()
If you want to try and run this code with the same file I am using it is a netCDF4 file was downloaded from CMIP5 website: http://pcmdi9.llnl.gov/ My file name:(/data/CCSM4/pr_Amon_CCSM4_historical_r1i1p1_185001-200512.nc) However the original data is in netCDF3_CLASSIC format so you have to change it to netCDF4.