Получение отдельных цветов с цветовой карты в matplotlib

Если у вас есть Colormap от

cmap = matplotlib.cm.get_cmap('Spectral') 

как вы можете получить определенный цвет из него между 0 и 1, где 0.0 является первым цветом на карте, а 1.0 является последним цветом на карте?

В идеале я мог бы получить средний цвет на карте, выполнив:

 >>> do_some_magic(cmap, 0.5) # Return an RGBA tuplet (0.1, 0.2, 0.3, 1.0) 

One Solution collect form web for “Получение отдельных цветов с цветовой карты в matplotlib”

Вы можете сделать это с помощью приведенного ниже кода, и код в вашем вопросе был действительно очень близок к тому, что вам нужно, все, что вам нужно сделать, это вызвать объект cmap который у вас есть.

 import matplotlib cmap = matplotlib.cm.get_cmap('Spectral') rgba = cmap(0.5) print(rgba) # (0.99807766255210428, 0.99923106502084169, 0.74602077638401709, 1.0) 

Для значений вне диапазона [0.0, 1.0] он возвращает нижний и дополнительный цвета (соответственно). По умолчанию это минимальный и максимальный цвет в диапазоне (так 0.0 и 1.0). Это значение по умолчанию можно изменить с помощью cmap.set_under() и cmap_set_over() .

Для «специальных» чисел, таких как np.nan и np.inf по умолчанию используется значение 0.0, это можно изменить с помощью cmap.set_bad() аналогично тому, как указано выше и выше.

Наконец, вам может потребоваться нормализовать ваши данные таким образом, чтобы они соответствовали диапазону [0.0, 1.0] . Это можно сделать с помощью matplotlib.colors.Normalize просто, как показано в небольшом примере ниже, где аргументы vmin и vmax описывают, какие числа должны быть сопоставлены с 0.0 и 1.0 соответственно.

 import matplotlib norm = matplotlib.colors.Normalize(vmin=10.0, vmax=20.0) print(norm(15.0)) # 0.5 

Логарифмический нормализатор ( matplotlib.colors.LogNorm ) также доступен для диапазонов данных с большим диапазоном значений.

(Спасибо Джо Кингтону и tcaswell за предложения о том, как улучшить ответ.)

  • Как наложить данные в течение «дневного периода» в Pandas для печати
  • Сюжет / Преобразование выражения, исходящего из sympy: серия Тейлора с matplotlib
  • Matplotlib event_handling line picker
  • Как построить 2 подзаголовка из разных функций в одном окне (рисунок)?
  • Как получить экземпляр Axs matplotlib для построения графика?
  • Импортировать подзаголовки с тем же цветом
  • python 2.7: не может нажимать на windows "bash: pip: command not found"
  • Регламентирование регулярных данных netcdf
  • Python - лучший язык программирования в мире.