Три типа палитр: последовательная, расходящаяся, категориальная

Тип палитры обязан соответствовать типу данных — иначе цвет лжёт о структуре.

Цветовые палитры делятся на три типа по структуре данных: последовательная (для упорядоченных величин от мало к много), расходящаяся (для отклонений от значимого центра в обе стороны) и категориальная (для несравнимых групп).

Палитра кодирует структуру данных

Выбор палитры — не вопрос вкуса. Каждый тип данных имеет структуру, и палитра должна её отражать. Неправильная палитра выдумывает структуру, которой нет, или прячет существующую.

Тип палитрыСтруктура данныхПримерКак устроена
Последовательнаяупорядоченная, один конец «больше»температура, плотность, высотасветлота монотонно растёт
Расходящаясяотклонение от центра в обе стороныкорреляция (−1..+1), аномалиядва цвета, нейтраль в центре
Категориальнаянесравнимые группыстраны, виды, экспериментыразные оттенки, равная светлота

Последовательная: от светлого к тёмному

Для упорядоченной величины (чем больше, тем «сильнее») нужна палитра, где главный сигнал несёт светлота: монотонно от светлого к тёмному (или наоборот). Тогда даже без цвета, в оттенках серого, порядок читается. Примеры: viridis, оттенки одного цвета (Blues, Reds). Светлота — то, что глаз воспринимает как «величину».

Расходящаяся: центр имеет смысл

Когда у данных есть осмысленный центр (ноль для корреляции, норма для аномалии температуры), и отклонения в обе стороны равноценны, нужна расходящаяся палитра: два контрастных цвета (например, синий–красный) с нейтральным белым в центре. Критично: центр палитры обязан совпадать с центром данных. Если корреляция от $-1$ до $+1$, белый должен быть на нуле, иначе график соврёт о знаке.

Категориальная: разные, но равные

Для групп без порядка (виды, страны) нужны различимые оттенки примерно равной светлоты — чтобы ни одна категория не казалась «главнее» из-за того, что темнее. Здесь нельзя брать последовательную палитру: она навяжет ложный порядок. И помните правило из урока про восприятие — не больше 6–8 категорий.

Проверим монотонность светлоты

Оценим воспринимаемую яркость (luminance) для последовательной палитры по формуле $L = 0{,}299R + 0{,}587G + 0{,}114B$ — она должна расти монотонно.

def luminance(rgb):
    r, g, b = rgb
    return round(0.299*r + 0.587*g + 0.114*b, 1)

# хорошая последовательная палитра (светлота растёт)
seq = [(247,251,255),(198,219,239),(107,174,214),(33,113,181),(8,48,107)]
print("последовательная (светлота должна убывать монотонно):")
prev = None
mono = True
for c in seq:
    L = luminance(c)
    flag = ""
    if prev is not None and L > prev:
        flag = "  <- НАРУШЕНИЕ монотонности"; mono = False
    print("  rgb", c, "L =", L, flag)
    prev = L
print("монотонно по светлоте:", mono)

Вывод:

последовательная (светлота должна убывать монотонно):
  rgb (247, 251, 255) L = 250.3 
  rgb (198, 219, 239) L = 215.0 
  rgb (107, 174, 214) L = 158.5 
  rgb (33, 113, 181) L = 96.8 
  rgb (8, 48, 107) L = 42.8 
монотонно по светлоте: True

Светлота убывает на каждом шаге — палитра корректно кодирует порядок одной только яркостью.

Как работает под капотом

Глаз воспринимает светлоту куда точнее, чем оттенок: канал яркости в зрительной системе имеет высокое разрешение, а цветовые каналы — низкое. Поэтому упорядоченную величину надо вести по светлоте (последовательная палитра), а оттенок использовать для различения групп (категориальная). Расходящаяся палитра эксплуатирует то, что два цвета по краям воспринимаются как «противоположности» относительно нейтрального центра.

ColorBrewer и готовые палитры

Не нужно изобретать палитры самому — есть проверенные наборы. Синтия Брюер, картограф, создала ColorBrewer: коллекцию палитр, разработанных для карт и научной графики, с разбивкой ровно по трём типам (sequential, diverging, qualitative) и пометками, какие из них дружелюбны к дальтонизму и переживают чёрно-белую печать. Эти палитры встроены в большинство библиотек визуализации. Для последовательных данных также прекрасно работает семейство viridis, а для категорий — палитра Okabe–Ito, специально подобранная под все типы дальтонизма.

Практическое правило: определите тип ваших данных (упорядоченные? с центром? категории?) и возьмите готовую палитру нужного типа из ColorBrewer или viridis-семейства. Это сэкономит время и убережёт от типичных ошибок — немонотонной светлоты, неразличимых для дальтоников пар, цветов, сливающихся при печати. Самостоятельный подбор цветов «на глаз» почти всегда проигрывает этим тщательно выверенным наборам.

Частые ошибки

  • Категориальная палитра для упорядоченных данных — теряется порядок, цвета кажутся случайными.
  • Последовательная для категорий — навязывает ложный порядок и «главную» группу.
  • Центр расходящейся палитры не на центре данных — график врёт о знаке отклонения.
  • Немонотонная светлота в последовательной палитре (привет, радуга) — порядок не читается.

Итог

  • Три типа палитр: последовательная, расходящаяся, категориальная.
  • Тип палитры должен соответствовать структуре данных.
  • Упорядоченную величину ведите по светлоте.
  • В расходящейся палитре центр обязан совпадать с центром данных.
Проверьте себя
1. Какую палитру выбрать для корреляции, меняющейся от −1 до +1?
AПоследовательную
BРасходящуюся с нейтральным центром на нуле
CКатегориальную
DРадужную
2. Чем главным образом должна кодировать величину последовательная палитра?
AОттенком
BСветлотой (монотонно от светлого к тёмному)
CНасыщенностью случайно
DЧислом цветов
3. Почему нельзя брать последовательную палитру для несравнимых категорий?
AОна слишком яркая
BОна навязывает ложный порядок: тёмные категории кажутся «больше» светлых
CЕё нельзя напечатать
DОна занимает много места