Python netcdf cartopy - 绘制数据选择

问题描述

我有一个 netcdf 文件 ('test.nc')。 netcdf文件的变量如下:

variables(dimensions): float64 lon(lon),float64 lat(lat),int32 crs(),int16 Band1(lat,lon)

我对“Band1”变量感兴趣。 使用 cartopy,我可以使用以下代码绘制数据:

import numpy as np
import pandas as pd
import gzip
from netCDF4 import Dataset,num2date
import time
import matplotlib.pyplot as plt
import os 
import matplotlib as mplt
#mplt.use('Agg')
import cartopy.crs as ccrs
import cartopy.feature as cfea
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable

projection=ccrs.PlateCarree()
bBox=[-180,180,-60,85];creg='glob'
mplt.rc('xtick',labelsize=9) 
mplt.rc('ytick',labelsize=9)

nc = Dataset('test.nc','r')
lat = nc.variables['lat'][:]
lon = nc.variables['lon'][:]
kopi= (nc.variables['Band1'][:,:])
nc.close()

fig=plt.figure(figsize=(11,5))
ax=fig.add_subplot(1,1,projection=projection)
ax.set_extent(bBox,projection)
ax.add_feature(cfea.COASTLINE,lw=.5)
ax.add_feature(cfea.RIVERS,lw=.5)
ax.add_feature(cfea.BORDERS,linewidth=0.6,edgecolor='dimgray')
ax.background_patch.set_facecolor('.9')
levels=[1,4,8,11,14,17,21,25,29]
cmap=plt.cm.BrBG
norm=mplt.colors.Boundarynorm(levels,cmap.N)
ddlalo=.25
pc=ax.contourf(lon,lat,kopi,levels=levels,transform=projection,cmap=cmap,norm=norm,extend='both')
divider = make_axes_locatable(ax)
ax_cb = divider.new_horizontal(size="3%",pad=0.1,axes_class=plt.Axes)
fig.colorbar(pc,extend='both',cax=ax_cb)
fig.add_axes(ax_cb)
fig.colorbar(pc,cax=ax_cb)
ttitle='Jony'
ax.set_title(ttitle,loc='left',fontsize=9)
plt.show()

enter image description here

但是,我只想在变量“Band1”中绘制一组值。我以为我可以使用以下代码

kopi= (nc.variables['Band1'][:,:])<=3

但是它不起作用,它没有绘制与值选择相对应的区域,而是选择了所有地图。

enter image description here

如何在变量“Band1”中选择并绘制所需的值范围?

解决方法

只需用 np.nan

屏蔽这些值
kopi[kopi <=3] = np.nan

这应该会在您的绘图中产生白色像素。 以后请提供测试数据。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...