Дальтонизм и доступность цвета
Примерно каждый двенадцатый мужчина не различит ваши красный и зелёный.
Дальтонизм (нарушение цветовосприятия) встречается у около 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 % мужчин путают красный и зелёный — это надо учитывать всегда.
- Никогда не кодируйте смысл только цветом: дублируйте стилем/маркером.
- Безопасные пары различаются по светлоте и сине-жёлтой оси (синий/оранжевый).
- Проверяйте фигуры симулятором дальтонизма и в ч/б.