Пользовательская цветовая панель matplotlib непреднамеренные дискретные цвета

Я использовал руководство из поваренной книги 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()

нежелательный вывод


person Faultier    schedule 26.09.2013    source источник


Ответы (1)


У вас есть опечатка в вашей последней записи для зеленого: 217.0/25

Это работает:

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/255, 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 = plt.matplotlib.colors.LinearSegmentedColormap('my_cmap',cdict,256)

введите здесь описание изображения

person Rutger Kassies    schedule 26.09.2013
comment
о боже, спасибо... Думаю, я выпью кофе, прежде чем продолжить работу -.- - person Faultier; 26.09.2013