Получение отдельных цветов с цветовой карты в 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 за предложения о том, как улучшить ответ.)

  • Python очень медленно запускается в Windows 7
  • Установка стиля летчика (outlier) в Seaborn boxplot игнорируется
  • Изменить ширину линии линий в легенде плаката matplotlib pyplot
  • matplotlib.pyplot.errorbar бросает ошибку, это не должно?
  • python plot простая гистограмма с заданными данными
  • Номера позиций легенды matplotlib
  • Задайте ось графика matplotlib как имя столбца dataframe
  • Matplotlib устанавливает заголовок жирным шрифтом при использовании «Times New Roman»
  • использование matplotlib на Mac для Python 2.7
  • Почему я получаю «UserWarning: модуль dap уже импортирован из None ...»
  • Matplotlib - логарифмическая шкала, но требует не логарифмических меток
  • Python - лучший язык программирования в мире.