Data-ink ratio и борьба с chartjunk

Каждый штрих на графике должен нести данные — остальное стирайте.

Data-ink ratio (по Эдварду Тафти) — доля «чернил» графика, которая приходится на собственно данные, относительно всех чернил. Идеал — приближать её к единице, удаляя всё, что не несёт информации.

Идея Тафти

Эдвард Тафти в книге «The Visual Display of Quantitative Information» сформулировал принцип: графика существует ради данных, а не ради украшений. Всё, что нарисовано, делится на «чернила данных» (точки, линии измерений) и «не-данные» (фоновая заливка, тяжёлые рамки, лишние линии сетки, тени, 3D). Тафти призывает максимизировать долю первого: стирайте не-данные, стирайте избыточные данные, стирайте, стирайте.

Формально: $\text{data-ink ratio} = \dfrac{\text{чернила на данные}}{\text{все чернила графика}}$. Чем ближе к 1, тем «честнее» график расходует внимание читателя. Это не призыв к аскетизму ради аскетизма — лишние элементы реально мешают: они конкурируют за внимание с данными и замедляют чтение.

Что такое chartjunk

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

Перегружено (chartjunk)        Очищено (high data-ink)
+========================+
|::::::::::::::::::::::::|      40|        ___
|:::::###:::::::::::::::|       30|   ___ |  |
|:::::###::::::###:::::|       20|  |  ||  |
|:::::###::::::###:::::|       10|  |  ||  | ___
|##############::::::::|        0|__|__||__||__|
+========================+          A   B   C
  тени, рамка, заливка             только данные

Lie factor: измеряем обман

Тафти также предложил lie factor — меру искажения: $\text{lie factor} = \dfrac{\text{размер эффекта на графике}}{\text{размер эффекта в данных}}$. Если значение выросло на 50 %, а столбик на картинке стал выше в 3 раза — график врёт. Честный график имеет lie factor около 1. Посчитаем для конкретного случая.

def lie_factor(shown_a, shown_b, data_a, data_b):
    eff_shown = abs(shown_b - shown_a) / shown_a
    eff_data = abs(data_b - data_a) / data_a
    return eff_shown / eff_data

# данные выросли с 100 до 150 (на 50%),
# но на графике столбик нарисован от 200 до 500 пикселей
lf = lie_factor(200, 500, 100, 150)
print("lie factor =", round(lf, 2))
print("честно, если близко к 1;", round(lf, 2), "-> график преувеличивает")

Вывод:

lie factor = 3.0
честно, если близко к 1; 3.0 -> график преувеличивает

Данные выросли в полтора раза, а график показывает рост втрое — lie factor 3, явное искажение.

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

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

Спор о chartjunk и где граница

Принципы Тафти иногда понимают слишком буквально — как призыв к полному аскетизму. Это вызвало содержательную дискуссию. Исследование Скотта Бейтмана (2010) показало, что умеренно «украшенные» графики иногда лучше запоминаются. Значит ли это, что Тафти неправ? Нет: речь о разных задачах. Для точного анализа и научной публикации минимализм выигрывает однозначно — лишние элементы замедляют чтение и повышают риск ошибки. Для запоминающейся инфографики в популярном тексте немного «характера» допустимо.

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

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

  • 3D там, где хватит 2D — главный источник chartjunk.
  • Тяжёлая тёмная сетка поверх данных — конкурирует с точками; делайте сетку бледной или убирайте.
  • Двойное кодирование без нужды — и цвет, и подпись, и узор для одной категории.
  • Искажённый масштаб ради «выразительности» — растёт lie factor.

Итог

  • Максимизируйте data-ink ratio: чернила — для данных.
  • Chartjunk (3D, тени, заливки) удаляйте безжалостно.
  • Lie factor около 1 — признак честного масштаба.
  • Минимализм освобождает внимание читателя для сигнала.
Проверьте себя
1. Что такое data-ink ratio?
AСоотношение цветов на графике
BДоля чернил, приходящаяся на данные, от всех чернил графика
CРазрешение изображения в DPI
DКоличество линий сетки
2. Что Тафти называет chartjunk?
AДанные с выбросами
BВизуальный мусор без информации: 3D-эффекты, тени, тяжёлые заливки и сетки
CПодписи осей
DЛинию регрессии
3. О чём говорит lie factor, равный 3?
AГрафик идеально честен
BЭффект на графике втрое больше, чем в данных — сильное искажение
CИспользовано 3 цвета
DВ данных три выброса