Какие параметры цветовой карты есть в matplotlib?

Matplotlib — популярная библиотека Python, используемая для визуализации данных и построения графиков. Одной из наиболее распространенных задач при использовании matplotlib является установка цветовой карты (также называемой цветовой картой) для графика. Цветовая карта управляет цветами, используемыми для сопоставления значений данных с цветами на графике. Matplotlib предоставляет широкий спектр встроенных цветовых карт на выбор. В этой статье мы рассмотрим различные параметры цветовой карты, доступные в matplotlib, и способы их эффективного использования для визуализации данных.

Введение в цветовые карты

Цветовая карта по сути является сопоставлением значений данных с цветами. Она используется для назначения цветов элементам графика, таким как линии, поверхности, точки рассеяния и т. д., на основе значений данных, связанных с ними. Например, на поверхностном графике двумерной функции z=f(x,y) цветовая карта назначает цвета пикселям на графике на основе z-значений, вычисленных из функции f(x,y) в этих местоположениях пикселей.

Некоторые распространенные применения цветовых карт:

  • Для визуализации высоты на графике поверхности
  • Для различения различных категорий на графике рассеяния
  • Для кодирования значений на заполненном контурном графике
  • Для отображения интенсивности или концентрации с помощью псевдоцветовых графиков

В Matplotlib есть модуль, предназначенный для цветовых карт, который называется matplotlib.cm. Этот модуль содержит коллекцию предопределенных цветовых карт, которые можно использовать в визуализациях matplotlib. Параметр cmap в функциях построения графиков matplotlib используется для указания цветовой карты. Также существуют вспомогательные функции, такие как colormap.ScalarMappable, которые могут сопоставлять значения данных с цветами цветовой карты.

Типы цветовых карт

Цветовые карты Matplotlib можно разделить на три категории:

Последовательные цветовые карты

Они сопоставляют значения данных с цветами по последовательному спектру. Низкие значения данных сопоставляются с цветами на одном конце спектра, а высокие значения данных сопоставляются с цветами на другом конце. Последовательные цветовые карты хороши для визуализации данных, которые имеют естественный порядок или организации данных от низких к высоким значениям. Вот некоторые распространенные последовательные цветовые карты:

  • viridis — диапазон от синего до желтого
  • plasma — диапазон от фиолетового до желтого
  • inferno — диапазон от черного до желтого
  • magma — диапазон от черного до белого

Расходящиеся цветовые карты

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

  • coolwarm — диапазон от синего до красного с белой средней точкой
  • PiYG — диапазон от розового до зелёного с белой средней точкой
  • PuOr — диапазон от фиолетового до оранжевого с белой средней точкой
  • RdBu — диапазон от красного до синего с белой средней точкой

Качественные/категориальные цветовые карты

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

  • Set1, Set2, Set3 — цветовые палитры с 9 различными цветами
  • tab10, tab20, tab20b, tab20c — цветовые палитры с 10-20 различными цветами
  • Paired — цветовая палитра с 12 различными цветами
  • Pastel1, Pastel2 — мягкие цветовые палитры

Часто используемые цветовые карты

Вот некоторые из наиболее часто используемых цветовых карт в matplotlib:

viridis

Это последовательная цветовая карта по умолчанию в matplotlib. Она перцептивно однородна и подходит для дальтоников. Цвета варьируются от синего до желтого.

inferno

Это еще одна перцептивно однородная цветовая карта, которая идет от черного до желтого. Полезно для визуализации горячих или ярких данных.

magma

Перцептивная однородная цветовая карта от черного до белого, полезна для визуализации с высокой контрастностью.

coolwarm

Расходящаяся цветовая карта от синего до красного с белой средней точкой, подходит для отклонения отрицательных/положительных значений.

RdBu

Расходящаяся цветовая карта от красного до синего с белой средней точкой. Помогает выделить порог среднего значения.

tab20

Качественная цветовая карта с 20 отдельными цветами, полезная для визуализации до 20 отдельных категорий.

tab10

Компактная качественная цветовая карта с 10 цветами для меньшего количества категорий.

Перцептуально однородные цветовые карты

Последние версии matplotlib (>=2.0) добавили новые цветовые карты, такие как viridis, magma, inferno и plasma, которые перцептуально однородны. Это означает, что равные шаги в значениях данных визуально воспринимаются как равные шаги в цветовой карте. Традиционно цветовые карты, такие как jet, имеют тенденцию к неравномерному перцептивному контрасту, что может искажать визуализацию. Перцептивно однородные цветовые карты устраняют эту проблему и значительно улучшают способность понимать изменения в данных. Их следует предпочесть для последовательных данных.

Цветовые карты, удобные для дальтоников

Некоторые цветовые карты, такие как viridis, разработаны для дальтоников, избегая цветов, которые трудно различить людям с дальтонизмом. При создании визуализаций для публичного использования важно убедиться, что выбранные цветовые карты удобны для дальтоников. Некоторые варианты: viridis, plasma и magma для последовательных данных и coolwarm для расходящихся данных. Избегайте радужных цветовых карт.

Пользовательские цветовые карты

Matplotlib также позволяет создавать пользовательские цветовые карты, указывая список цветов, входящих в цветовую карту. Например:

 from matplotlib.colors import LinearSegmentedColormap cm = LinearSegmentedColormap.from_list('custom', ['red', 'green', 'blue'])  

Это создает пользовательскую 3-цветную последовательную цветовую карту. Мы можем указать любые цвета и любое количество цветов в списке по мере необходимости. Пользовательские цветовые карты дают полную гибкость в компромиссе между количеством цветов и однородностью восприятия.

Нормализация и масштабирование цветовой карты

Цветовые карты Matplotlib обычно нормализуются для сопоставления значений данных в диапазоне [0, 1] с цветами. Однако нам часто необходимо сопоставлять пользовательские диапазоны данных с цветовой картой. Это можно сделать с помощью аргументов vmin и vmax для функций построения графиков в matplotlib. Например:

 plot(data, vmin=-100, vmax=500, cmap='coolwarm')  

Это сопоставит значения данных в диапазоне от -100 до 500 с цветовой картой coolwarm. Значения ниже -100 получат самый низкий цвет цветовой карты, а значения выше 500 получат самый высокий цвет цветовой карты.

Класс matplotlib.colors.Normalize также можно использовать для настройки нормализации данных для цветовых карт. Это дает больше контроля над масштабированием, включая сопоставление только части цветовой карты значениям данных или применение нелинейного масштабирования.

Расходящиеся цветовые карты с центральным значением

Для расходящихся цветовых карт, таких как coolwarm или RdBu, мы часто хотим явно задать значение данных, которое сопоставляется с центральным/переходным цветом в цветовой карте. Это делается с помощью аргумента center для Normalize. Например:

 from matplotlib.colors import Normalize norm = Normalize(vmin=-100, vmax=150, center=0) plot(data, cmap='coolwarm', norm=norm)  

Здесь 0 будет сопоставлен с белой средней точкой цветовой карты coolwarm. Значения данных от -100 до 0 будут иметь синеватые цвета, а значения от 0 до 150 будут иметь красноватые цвета.

Справочник по цветовой карте для категорий

Качественные цветовые карты, которые полезны для категориальных данных:

Цветовая карта Количество цветов
tab10 10
tab20 20
tab20b 20
tab20c 20
Pastel1 9
Pastel2 8
Paired 12
Accent 8
Dark2 8
Set1 9
Set2 8
Set3 12

Они предоставляют широкий диапазон различных цветов для визуализации до 10-20 категорий на графиках.

Справочник по цветовой карте для последовательных данных

Рекомендуемые цветовые карты для последовательных данных:

Цветовая карта Описание
viridis Перцептивно однородный, от синего до желтого
plasma Перцептивно однородный, от фиолетового до желтого
inferno Перцептивно однородный, от черного до желтого
magma Перцептивно однородный, от черного до белого
cividis Перцептивно однородный, от синего до желтого
Серые От белого до черного в оттенках серого
Фиолетовые От белого до фиолетового
Синие От белого до синего
Зеленые От белого до зеленого
Оранжевые От белого до оранжевого
Красные От белого до красного

Справочник по цветовой карте для расходящихся данных

Рекомендуемые цветовые карты для расходящихся данных вокруг центральной точки:

Цветовая карта Описание
холодныйтеплый От синего к красному с белой серединой
PiYG От розового к зеленому с белой серединой
PRGn От фиолетового к зеленому с белой серединой
PuOr От фиолетового к оранжевому с белой серединой
RdBu От красного к синему с белой серединой
RdYlBu От красного к желтому к синему с белой серединой
RdYlGn От красного к от желтого до зеленого с белой средней точкой
Спектральный От красного до синего с ненасыщенными цветами

Установка цветовой карты по умолчанию

Цветовую карту по умолчанию в matplotlib можно задать глобально с помощью:

 import matplotlib.pyplot as plt plt.rcParams['image.cmap'] = 'viridis'  

Это сделает viridis цветом по умолчанию для всех графиков, созданных в сеансе. Похожие rcParams существуют для определенных типов графиков, таких как image, pcolor, scatter и т. д.

Значение по умолчанию можно вернуть к исходному с помощью:

 plt.rcParams['image.cmap'] = None  

Краткое описание цветовой карты

Подводя итог, можно сказать, что эффективное использование цветовых карт включает в себя:

  • Использование перцептивно однородных карт, таких как viridis, для последовательных данных
  • Использование расходящихся цветовых карт, таких как coolwarm, для выделения средней точки
  • Использование категориальных карт, таких как tab10, для дискретных категорий
  • Установка перцептивно однородных карт, таких как viridis, в качестве значений по умолчанию
  • Избегание радужных цветовых карт для непрерывных данных

Matplotlib предоставляет широкий выбор цветовых карт, которые покрывают большинство потребностей визуализации данных. Аргумент cmap и модуль matplotlib.cm предоставляют доступ как к встроенным, так и к пользовательским цветовым картам для универсального управления цветовым отображением на графиках.

Заключение

В этой статье мы рассмотрели различные параметры цветовых карт, доступные в matplotlib. Ключевые моменты:

  • Цветовые карты управляют отображением значений данных в цвета при построении графиков
  • Основные типы цветовых карт — последовательные, расходящиеся и категориальные
  • Перцептивно однородные цветовые карты, такие как viridis, улучшают визуализацию
  • Расходящиеся цветовые карты выделяют критическое значение средней точки
  • Категориальные цветовые карты различают различные классы данных
  • Цветовые карты можно настраивать с помощью списков цветов
  • Нормализация и масштабирование сопоставляют диапазоны данных с цветовыми картами
  • Выбор правильной цветовой карты важен для эффективной визуализации

Универсальные параметры цветовых карт Matplotlib, а также возможность создания пользовательских карт, позволяют осуществлять детальный контроль над цветами, используемыми для визуализации данных на графиках Python.