Python Matplotlib Colormap - PullRequest
       5

Python Matplotlib Colormap

4 голосов
/ 27 марта 2012

Я использую цветовую карту "jet" для построения графиков. Но я хотел бы иметь более низкие значения в белом цвете, и эта цветовая карта переходит от синего к красному цветам. Я также не хочу использовать другую цветовую карту, потому что мне нужен этот диапазон цветов ... Я пытался сделать так, чтобы моя цветовая карта была такой же, как у «jet» с диапазоном значений белого, но это слишком сложно. Кто-нибудь может мне помочь, пожалуйста? Спасибо

Ответы [ 3 ]

9 голосов
/ 28 марта 2012

Вероятно, должно быть самое простое решение, но я понял это путем создания собственного 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()

Вы получите следующее: jet colormap with white

7 голосов
/ 11 декабря 2013

Есть еще один способ сделать то же самое без определения нового колобара.Вы можете использовать метод cmap.set_under, который определяет цвет, который будет использоваться для всех значений ниже заданного порогового значения.Порог определяется во время pcolormesh:

from matplotlib.pyplot import *
import numpy as np

mycmap = cm.get_cmap('jet')
mycmap.set_under('w')

pcolor(np.random.rand(10,10), cmap=mycmap, vmin=.1)
colorbar()
show()
6 голосов
/ 27 марта 2012

Примерно такой пример есть на странице colormaps . Копая источник matplotlib на моей машине, струя определяется как (в _cm.py):

_jet_data =   {'red':   ((0., 0, 0), (0.35, 0, 0), (0.66, 1, 1), (0.89,1, 1),
                         (1, 0.5, 0.5)),
               'green': ((0., 0, 0), (0.125,0, 0), (0.375,1, 1), (0.64,1, 1),
                         (0.91,0,0), (1, 0, 0)),
               'blue':  ((0., 0.5, 0.5), (0.11, 1, 1), (0.34, 1, 1), (0.65,0, 0),
                         (1, 0, 0))}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...