Я использовал руководство из поваренной книги matplotlib для создания индивидуальной цветовой шкалы. Интерполяция цвета почему-то не работает на шаге от 0,8 до 1,0. Я не уверен, что я сделал неправильно на этом шаге, так как шаги дискретного цвета должны происходить только в том случае, если второе и третье число соответствующего кортежа различны. Я намерен перейти от RGB 0/130/195 к 102/179/218 на последнем шаге.
Кстати, кто-нибудь знает, для чего используется аргумент name
в LinearSegmentedColormap
? В документации это не упоминается.
Я использую matplotlib версии 1.2.1 и Python 2.7.5.
import pylab as P
import numpy as N
cdict = {'red': ((0.0, 51.0/255, 51.0/255),
(0.2, 180.0/255, 180.0/255),
(0.4, 175.0/255, 175.0/255),
(0.6, 206.0/255, 206.0/255),
(0.8, 0.0/255, 0.0/255),
(1.0, 102.0/255, 102.0/255)),
'green':((0.0, 51.0/255, 51.0/255),
(0.2, 180.0/255, 180.0/255),
(0.4, 200.0/255, 200.0/255),
(0.6, 211.0/255, 211.0/255),
(0.8, 130.0/255, 130.0/255),
(1.0, 217.0/25, 217.0/255)),
'blue': ((0.0, 51.0/255, 51.0/255),
(0.2, 180.0/255, 180.0/255),
(0.4, 7.0/255, 7.0/255),
(0.6, 106.0/255, 106.0/255),
(0.8, 195.0/255, 195.0/255),
(1.0, 237.0/255, 237.0/255))
}
res_map = P.matplotlib.colors.LinearSegmentedColormap('my_cmap',cdict,256)
P.figure()
P.pcolor(N.reshape(N.linspace(0,100,100*100), (100,100)),cmap=res_map)
P.colorbar()
P.show()