Дальтонизм и доступность цвета

Примерно каждый двенадцатый мужчина не различит ваши красный и зелёный.

Дальтонизм (нарушение цветовосприятия) встречается у около 8 % мужчин и 0,5 % женщин. Чаще всего страдает различение красного и зелёного. График, где смысл несут только эти цвета, для таких читателей нечитаем.

Масштаб проблемы

Восемь процентов — это не мелочь: в аудитории доклада из 100 мужчин примерно восемь не увидят разницы между вашими «красной» и «зелёной» линиями. Среди рецензентов, читателей статьи, студентов всегда есть дальтоники. Доступность — это не благотворительность, а часть корректности: если часть читателей не может прочитать график, он плохо выполняет свою работу.

Типы и что путается

ТипЧто страдаетПутаются цвета
Дейтеранопиязелёные колбочкикрасный ↔ зелёный
Протанопиякрасные колбочкикрасный ↔ зелёный, тёмный красный
Тританопия (редко)синие колбочкисиний ↔ зелёный, жёлтый

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

Главный принцип: не только цвет

Золотое правило доступности — дублировать цвет другим каналом. Линии различайте не только цветом, но и стилем (сплошная/пунктир/штрих) и/или маркером. Категории на scatter — формой и цветом. Тогда даже при полной потере цвета (или ч/б печати) график читается. Цвет становится приятным дополнением, а не единственным носителем смысла.

Проверим различимость по светлоте

Дальтоники обычно сохраняют восприятие светлоты. Если две «спорные» краски сильно отличаются по яркости — их различат. Проверим красный и зелёный.

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

red   = (220, 50, 32)
green = (34, 139, 34)
blue  = (0, 90, 181)
orange= (255, 165, 0)

print("красный L =", lum(red))
print("зелёный L =", lum(green))
print("-> по светлоте близки, дальтоник спутает")
print()
print("безопасная пара синий/оранжевый:")
print("синий   L =", lum(blue))
print("оранжев L =", lum(orange))
print("-> и оттенок, и светлота различаются")

Вывод:

красный L = 98.8
зелёный L = 95.6
-> по светлоте близки, дальтоник спутает

безопасная пара синий/оранжевый:
синий   L = 73.5
оранжев L = 173.1
-> и оттенок, и светлота различаются

Красный и зелёный почти совпадают по светлоте (96 и 105) — для дальтоника это одинаковые серые. А синий/оранжевый различаются и оттенком, и яркостью (71 против 173) — безопасная пара.

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

При дейтеранопии отсутствует или сдвинут пигмент M-колбочек, отвечающих за зелёный; красно-зелёная ось цветового пространства схлопывается, остаётся в основном сине-жёлтая ось и светлота. Поэтому безопасные палитры (viridis, Okabe–Ito, ColorBrewer «colorblind safe») строят различия вдоль сине-жёлтой оси и светлоты, избегая чистой красно-зелёной разницы. Симуляторы дальтонизма пересчитывают изображение в восприятие дихромата — ими стоит проверять каждую публикационную фигуру.

Проектируйте сразу доступно

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

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

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

  • Красный/зелёный для двух групп — нечитаемо для 8 % мужчин.
  • Цвет как единственный канал различия — добавляйте стиль линии, маркер, узор.
  • Не проверять симулятором — глазами автора (если он не дальтоник) проблема невидима.
  • Светлофор «красный–жёлтый–зелёный» — двойная проблема для красно-зелёной спутанности.

Итог

  • Около 8 % мужчин путают красный и зелёный — это надо учитывать всегда.
  • Никогда не кодируйте смысл только цветом: дублируйте стилем/маркером.
  • Безопасные пары различаются по светлоте и сине-жёлтой оси (синий/оранжевый).
  • Проверяйте фигуры симулятором дальтонизма и в ч/б.
Проверьте себя
1. Какая доля мужчин страдает дальтонизмом?
AОколо 0,1%
BОколо 8%
CОколо 30%
DОколо 50%
2. Каков главный принцип доступного для дальтоников графика?
AИспользовать только красный и зелёный
BНе кодировать смысл одним лишь цветом — дублировать стилем линии, маркером или узором
CДелать график чёрно-белым всегда
DУвеличить размер шрифта
3. Почему синий/оранжевый — безопасная пара, а красный/зелёный — нет?
AСиний и оранжевый ярче
BКрасный и зелёный близки по светлоте и лежат на проблемной оси, а синий/оранжевый различаются и оттенком, и яркостью
CЭто случайность
DОранжевый не используется в науке