Ответ 1
Вы можете использовать ListedColormap
, чтобы указать белый и красный как единственные цвета на карте цветов, а границы определяют, где переход от одного цвета к другому:
import matplotlib.pyplot as plt
from matplotlib import colors
import numpy as np
np.random.seed(101)
zvals = np.random.rand(100, 100) * 10
# make a color map of fixed colors
cmap = colors.ListedColormap(['white', 'red'])
bounds=[0,5,10]
norm = colors.BoundaryNorm(bounds, cmap.N)
# tell imshow about color map so that only set colors are used
img = plt.imshow(zvals, interpolation='nearest', origin='lower',
cmap=cmap, norm=norm)
# make a color bar
plt.colorbar(img, cmap=cmap, norm=norm, boundaries=bounds, ticks=[0, 5, 10])
plt.savefig('redwhite.png')
plt.show()
Результирующая фигура имеет только два цвета:
Я предложил, по сути, одно и то же для несколько иного вопроса: 2D-визуализация сетки в Python
Решение основано на примере matplotlib. В этом примере объясняется, что bounds
должен быть больше, чем количество используемых цветов.
BoundaryNorm
- это нормализация, которая отображает ряд значений в целые числа, которые затем используются для назначения соответствующих цветов. cmap.N
, в приведенном выше примере просто определяет количество цветов.