import netCDF4 as nc
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy as np
filepath = '/run/media/root/*WRF/-5/s/wrfout_d02_2014-09-28_12_00_00'
data = nc.Dataset(filepath,'r')
var = 'REFL_10CM'
dbz = data.variables[var][:]
dbzsize = np.shape(data.variables[var])
timelen = dbzsize[0]
heightlen = dbzsize[1]
latlen = dbzsize[2]
lonlen = dbzsize[3]
print(dbzsize)
lats = 30; late = 35;
lons = 114; lone = 120;
m = Basemap(projection='cyl',llcrnrlat=lats,urcrnrlat=late,llcrnrlon=lons,urcrnrlon=lone,resolution='i')
m.drawparallels(np.arange(lats,late+1,1.),labels = [1,0,0,0],fontsize=15,linewidth = 0. )
# set linewidth = 0 to turn off longitude and latitude dash line
m.drawmeridians(np.arange(lons,lone+2,2.),labels = [0,0,0,1],fontsize=15,linewidth = 0.)
m.drawcoastlines()
m.drawcountries()
#m.drawlsmask()
lon,lat = m.makegrid(lonlen,latlen)
print(np.shape(lon))
x,y = m(lon,lat)
clevs = np.arange(0,70,10)
cdict = {'red' : [(0.,0,1),
(0.15,1.,1.),
(0.3,0.85,0.85),
(0.45,0.7,0.7),
(0.6,0.55,0.55),
(0.75,0.4,0.4),
(0.9,0,1),
(1.,1.,0.)],
'green' : [(0.,0,1),
(0.15,1.,1.),
(0.3,0.85,0.85),
(0.45,0.7,0.7),
(0.6,0.55,0.55),
(0.75,0.4,0.4),
(0.9,1.,1.),
(1.,1.,1.)],
'blue' : [(0.,0,1),
(0.15,1.,1.),
(0.3,0.85,0.85),
(0.45,0.7,0.7),
(0.6,0.55,0.55),
(0.75,0.4,0.4),
(0.9,1,1.),
(1.,1.,1.)]}
my_cmap = colors.LinearSegmentedColormap(name='dbzcmap',segmentdata = cdict,N=256)
#cm.register_cmap(name = 'dbzcmap',data = cdict,lut = 128)
# 如果把上述语句取消注释,把LinearSegmentedColormap语句行注释掉,也可定义colormap
# 但是下面语句中的cmap=my_cmap应改为 cmap = 'dbzcmap'
ref = m.contourf(lon,lat,dbz[29,29,:,:],clevs,alpha = 1,cmap= my_cmap)#plt.cm.Greys)
# alpha 表示透明度
cbar = m.colorbar(ref)
cbar.set_label('dBZ')
axes = plt.gca()
plt.grid(False)
plt.title('Reflectivity plot for WRF_ARW',size = 20)
plt.savefig('dbz')
plt.show()