修复basemap python中的颜色栏范围

修复basemap python中的颜色栏范围,python,range,matplotlib-basemap,colorbar,Python,Range,Matplotlib Basemap,Colorbar,我正在世界地图上绘制一个二维温度阵列,使用Basemap。除了颜色条之外,所有的工作都很好,我想在Tmin-Tmax的某个范围内修复它。不幸的是,我用于matplotlib的vmin和vmax在这里似乎不起作用,我无法找到用于此目的的正确关键字(如果有)。有什么建议吗?谢谢 fig = plt.figure(figsize=(20,10)) map = Basemap(projection='cyl', lat_0 = 57, lon_0 = -135, resolution = RES, ar

我正在世界地图上绘制一个二维温度阵列,使用
Basemap
。除了颜色条之外,所有的工作都很好,我想在Tmin-Tmax的某个范围内修复它。不幸的是,我用于matplotlib的
vmin
vmax
在这里似乎不起作用,我无法找到用于此目的的正确关键字(如果有)。有什么建议吗?谢谢

fig = plt.figure(figsize=(20,10))
map = Basemap(projection='cyl', lat_0 = 57, lon_0 = -135, resolution = RES, area_thresh = 0.1, llcrnrlon=-180., llcrnrlat=-90., urcrnrlon=180., urcrnrlat=90.)
map.drawcoastlines()
map.drawcountries()
map.drawparallels(np.arange(-90,90,15),labels=[1,1,0,1])
map.drawmeridians(np.arange(-180,180,15),labels=[1,1,0,1])
map.drawmapboundary()
map.imshow(IR1)
cbar = map.colorbar(location='right', pad="5%")
cbar.set_label('T [Celsius]')
plt.title("temperature")
plt.savefig("temperature.png")

这里我使用np.ma.masked给出了一个想法。任何关于我工作的建议都将不胜感激

我使用
一个netcdf文件
读取整个区域的温度。这与你的工作相似

在设置vmin和vmax之前

色条表示温度在268.5到281之间

如果我想画出温度在270到275之间的区域。这是我的解决办法

改进

### Read the file 
wrf_file1 = "wrf_201401.nc"
t_m1 = gdal.Open('NETCDF:"'+wrf_file1+'":T2')
lon = gdal.Open('NETCDF:"'+wrf_file1+'":XLONG')
lat = gdal.Open('NETCDF:"'+wrf_file1+'":XLAT') 

### plot 
fig =plt.figure(figsize=(6,4))
ax = plt.subplot()
map = basemap(llcrnrlon=xxx,llcrnrlat=xxx,urcrnrlon=xxx,urcrnrlat=xxx)

x, y = map(lon.ReadAsArray()[362], lat.ReadAsArray()[362])

t = t_m1.ReadAsArray()[30,:,:]  ### select one dataframe
cf = map.pcolormesh(x, y,t,cmap=plt.cm.Spectral_r,alpha = 0.8) 
divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="3%", pad=0.4)
cbar = plt.colorbar(cf, cax=cax)   
plt.show()         
fig =plt.figure(figsize=(6,4))
ax = plt.subplot()
t = t_m1.ReadAsArray()[30,:,:]
t_mask_1 = np.ma.masked_greater(t,275)
t_mask_2 = np.ma.masked_less(t_mask_1,270)

cf = map.pcolormesh(x, y,t_mask_2,cmap=plt.cm.Spectral_r,alpha = 0.8) 
divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="3%", pad=0.4)
cbar = plt.colorbar(cf, cax=cax)   

plt.show()