Я строю некоторые целочисленные метки на карте океана, используя cartopy и pcolor в python.Я бы хотел, чтобы значения NaN отображались в виде белых пятен.Однако в настоящее время значения NaN строятся с использованием самого низкого цвета в цветовой карте.Как я могу получить pcolor для отображения значений NaN белым?
Вот пример карты, где pcolor отображает значения NaN с использованием цвета вместо белого
Я пыталсянастройка цветовой карты с использованием таких функций, как cmap.set_bad, но пока я не могу заставить это работать.Я также пытался использовать маскированный массив, но он также не работал.Ниже я включил некоторый автономный пример кода, который воспроизводит проблему, по крайней мере, в моей среде.
import numpy as np
import matplotlib as mpl
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.pyplot as plt
from random import seed
from random import randint
## set maximum number of integer labels
n_comp = 4
# generate random integer "labels" as example data
seed(1)
labels = np.zeros((128*64,1))
for ncomp in range(0, 64*128-1):
labels[ncomp] = randint(0, n_comp)
# make array 2D for plotting
labels2D = labels.reshape((128,64))
# replace zero with nan
labels2D[labels2D==0] = np.nan
# create latitude / longitude data
x = np.arange(0.0,360.0,2.815)
xx = np.tile(x,[64,1])
xx = xx.transpose()
y = np.arange(-90,90,2.815)
yy = np.tile(y,[128,1])
# create figure and axes
fig = plt.figure(figsize=(10, 5))
ax = fig.add_subplot(1, 1, 1,
projection=ccrs.Robinson(central_longitude=-150))
# create colormap
cmap=plt.get_cmap('Accent', n_comp+1)
# use white color to mark 'bad' values
cmap.set_bad(color='w')
# use norm to define colormap
boundaries = np.arange(0.5,n_comp+1,1)
norm = mpl.colors.BoundaryNorm(boundaries, cmap.N, clip=True)
# use pcolor to make label map
labelMap = ax.pcolor(xx, yy, labels2D,
transform=ccrs.PlateCarree(),
norm=norm,
cmap=cmap,
vmin = 1,
vmax = n_comp)
# add continents on top of label data
ax.add_feature(cfeature.LAND, zorder=1, edgecolor='black')
# plot colorbar with ticks at centres of bars
plt.colorbar(labelMap, ticks=np.arange(1,n_comp+1,1))
# show plot
plt.show()
Я бы хотел, чтобы значения NaN были обозначены белым цветом, но в настоящее время они отображаются цветом из цветовой карты.Заранее благодарим за любую помощь / руководство.