Существует несколько способов достижения желаемого эффекта:
1) ограничьте значения Z напрямую, как показано ниже, затем построите результирующий массив:
Z2 = Z.copy()
Z2[Z<Zmin] = Zmin
Z2[Z>Zmax] = Zmax
CS = plt.contourf(X, Y, Z2, cmap=cmap)
2) измените масштаб вашей цветовой шкалы, используя аргументы vmin
и vmax
:
CS = plt.contourf(X, Y, Z, cmap=cmap, vmin=Zmin, vmax=Zmax)
Edit:
Неправильно прочитал ваш вопрос / намерение. Если вы хотите пометить значения вне диапазона,
затем либо установите для них значение NaN (в этом случае соответствующие местоположения будут белыми), либо используйте ваш подход set_under
/ set_over
вместе с аргументами vmin
и vmax
.
1) установить значения вне диапазона на NaN:
Z2 = Z.copy()
Z2[Z<Zmin] = np.nan
Z2[Z>Zmax] = np.nan
CS = plt.contourf(X, Y, Z2, cmap=cmap)
2) set_under
и set_over
, затем установите пределы, используя аргументы vmin
и vmax
:
cmap.set_under("magenta")
cmap.set_over("yellow")
CS = plt.contourf(X, Y, Z, cmap=cmap, vmin=Zmin, vmax=Zmax)