python 自定义地图_matplotlib自定义colormap

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值