Вероятно, должно быть самое простое решение, но я понял это путем создания собственного matplotlib.colors.LinearSegmentedColormap, основанного на "реактивном".
(Самый низкий уровень вашей цветовой карты определяется в первой строке каждого кортежа красного, зеленого и синего цветов, так что именно здесь вы начинаете редактирование. Я добавляю один дополнительный кортеж, чтобы в нижней части было четко белое пятно.
... для каждого цвета в первом элементе кортежа вы указываете позицию на своей цветовой панели (от 0 до 1), а во втором и третьем - сам цвет).
from matplotlib.pyplot import *
import matplotlib
import numpy as np
cdict = {'red': ((0., 1, 1),
(0.05, 1, 1),
(0.11, 0, 0),
(0.66, 1, 1),
(0.89, 1, 1),
(1, 0.5, 0.5)),
'green': ((0., 1, 1),
(0.05, 1, 1),
(0.11, 0, 0),
(0.375, 1, 1),
(0.64, 1, 1),
(0.91, 0, 0),
(1, 0, 0)),
'blue': ((0., 1, 1),
(0.05, 1, 1),
(0.11, 1, 1),
(0.34, 1, 1),
(0.65, 0, 0),
(1, 0, 0))}
my_cmap = matplotlib.colors.LinearSegmentedColormap('my_colormap',cdict,256)
pcolor(np.random.rand(10,10),cmap=my_cmap)
colorbar()
show()
Вы получите следующее:
