4

⏳ Визуализация времени

глава из курса гибкий график

Динамика

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

Теперь настало время поговорить о графиках для анализа динамики. Такие визуализации позволяют отслеживать изменения показателей во времени, видеть тенденции и аномалии, а также выявлять цикличность или долгосрочные тренды. Эти графики помогут вам ответить на вопросы вроде: «Как изменились продажи за последний год?» или «Какой тренд показывает посещаемость сайта?».

В этой главе мы разберем, какие графики лучше всего подходят для задач динамики, как их задизайнить, чтобы они были максимально информативными, и какие ошибки стоит избегать при их создании.

Линейный график

Линейный график (line chart) — один из самых популярных графиков в мире визуализации данных. Он прост в интерпретации и помогает анализировать динамику изменений, позволяя увидеть общий тренд метрики. Тем не менее, даже с таким простым инструментом можно легко ошибиться в представлении данных.

На картинке ниже пример линейного графика про стоимость натуральных и искусственно выращенных бриллиантов:
  • Горизонтальная ось – даты, здесь – года
  • Вертикальная ось – метрика, здесь – стоимость бриллиантов в $
  • На пересечении вертикальной и горизонтальной осей стоят точки, показывающие значение стоимости в конкретный год. Эти точки соединены линиями, из-за чего и получается линейный график.
✏️ Правила
1
Не использовать линейные графики для категорий
Мы инстинктивно соединяем точки данных на линейном графике, опираясь на гештальт-принцип непрерывности. Мы воспринимаем линии как что-то непрерывное, подобное течению времени и изменению метрики. Когда линейный график строится на категориальных данных, мы начинаем сильно путаться, потому что ожидаем увидеть динамику, а по факту нам предлагают сделать сравнение.
2
Время идет слева направо
В большинстве случаев время на линейной диаграмме должно идти слева направо. Такое направление интуитивно понятно пользователям и соответствует направлению чтения во многих странах. Могут быть исключения для регионов, где читают в обратном порядке.
Можно еще почитать, почему линейные графики сверху вниз – не очень хорошая идея.
3
Временные интервалы и отсечки на шкале должны соответствовать друг другу
В приведенном ниже примере отсечка для 2021 года находится дальше от предыдущих интервалов в 50 лет, потому что именно так и есть в данных.
4
Если в данных есть пропуски, это должно быть видно на графике
Не соединяйте точки, между которыми данных нет. Чтобы совсем не прерывать тренд, можно показать пунктиром часть с пропусками.
5
Можно оторвать ось от нуля, если линия только одна и тренд относительно плоский
Основная задача линейного графика – понимание тренда и динамики, а не сравнения, как в барчартах. Отрывать ось от 0 здесь допустимо в кейсах, когда разница между интервалами минимальна.
Когда линий несколько, помимо анализа динамики, важно еще и сравнить их между собой. В таких случаях отрыв оси от 0 не всегда оправдан: если значения сильно отличаются, но идут практически параллельно, это может исказить восприятие разницы, делая ее больше, чем она есть на самом деле. На графике справа ось начинается не с 0, из-за чего создается ощущение, что разница между линиями более чем двукратная, хотя в реальности она меньше.
Здесь на примере линии пересекаются и значения сравнимы между собой, поэтому 0 можно оторвать.
6
Размеры графика влияют на восприятие тренда
Ширина графика влияет на восприятие трендов: чем он шире, тем линии кажутся более сглаженными, а чем уже — тем сильнее подчеркиваются колебания данных.

Часто используют соотношение сторон 16:9, но есть и более точный подход — «banking to 45°». Он предполагает настройку соотношения так, чтобы углы наклона линий были ближе к 45°, что делает тренды более читаемыми. Однако это не жесткое правило — в итоге важно, чтобы график помогал анализировать данные, не выглядел слишком плоским или, наоборот, чересчур резким.
7
Синхронизируйте двойные оси
Вообще, в линейных графиках лучше не делать двойные оси. Но если вдруг она уже двойная, то обязательно синхронизируйте их. Несинхронизированные оси могут ввести в заблуждение, создавая иллюзию несоответствующих масштабов и искажая восприятие трендов. Кроме того, важно четко обозначить, какие метрики соответствуют какой оси, чтобы пользователи не путались в интерпретации данных.

Почему двойные оси – это плохо?

а) Тяжело понять, где какая ось и к какому графику она относится. Мы интуитивно ожидаем, что ось будет одна, поэтому наличие двух осей может запутать. Если их разметка, цвет или положение неочевидны, зрителю придется тратить дополнительное время на разбор, что затрудняет быстрый и точный анализ данных.
б) Легко манипулировать осями. У каждой оси может быть свой диапазон, и если они не синхронизированы, это может привести к искаженной интерпретации данных. В линейных графиках даже с одной осью бывает сложно подобрать оптимальный диапазон, а с двумя — тем более.
Как бороться:
1
Расположить графики друг под другом
Это самый эффективный способ, так как каждая метрика сохраняет свою ось, что упрощает восприятие данных и снижает вероятность ошибок в интерпретации. Такой подход позволяет избежать искажений, которые могут возникнуть при использовании двух осей на одном графике.
2
Смотреть на изменение, а не на абсолюты
Можно показать процентное изменение обеих метрик, давая возможность сравнить темпы роста. Это поможет сфокусироваться на динамике показателей, а не на их абсолютных значениях. Особенно полезно, когда у метрик сильно разные масштабы.
3
Подписать все значения одной из метрик
Делала бы это прям в крайних случаях и только с разными видами визуализаций: барчарт + линейный график.

Что делать, когда линий на графике слишком много?

Нет строгого правила, определяющего максимальное количество линий, которые можно включить в линейный график, но во всем нужно знать меру. В идеале лучше ограничиться “золотым” числом в 4-5 линий. При превышении этого порога возрастает риск создания “спагетти графика”, где линии чрезмерно перекрываются. Но что делать, если линий много и все нужны?

а) Выделите одну категорию, а остальные сделайте менее заметными (например, серыми). Это сохранит контекст данных, но не создаст визуальный шум.
Можно подсветить и несколько линий.
б) Сравните выбранную линию с релевантной агрегирующей статистикой, например, со средним, процентилем, медианой или экстремальными значениями, чтобы добавить контекст к графику.
Ниже пример, где наоборот подсвечено только среднее.
в) Попробуйте разбить на несколько графиков, находящихся рядом друг с другом, облегчая сравнение и сохраняя диапазоны осей.

Линейный график или вертикальный барчарт?

Барчарт тоже можно использовать для визуализации данных во времени и выше у нас были такие примеры в блоке про двойные оси.
Когда что выбрать?

Линейный график, если:

а) Важен тренд
Линии подчеркнут плавность изменений между точками.

б) Данные имеют частые изменения
Линейный график подходит для отображения постепенных колебаний, пиков и спадов.

в) Нужно отобразить несколько категорий данных
Например, сравнение показателей для разных категорий или регионов.

Барчарт, если:

а) Важно сравнение отдельных периодов
Особенно, если важны конкретные сравнения (например, месяцы, кварталы, годы).

б) Интересуют конкретные значения, а не тренд
Барчарт делает акцент на величинах и различиях между временными точками.
💡 Если важна непрерывность изменения во времени — линейный график. Если важно сравнить значения за временные интервалы относительно друг друга — барчарт. Можно также комбинировать: например, фактическое значение метрики — линейным графиком, так как важна динамика, а изменение метрики месяц к месяцу — барчартом, чтобы понять, выросли ли мы в этом месяце больше, чем в предыдущем.

Слоуп график

График наклона (slope chart) — это упрощённый линейный график, который идеально подходит для ситуаций, когда не все точки данных временного ряда должны быть отображены.
На картинке ниже пример слоуп графика о текущих поступлениях правительства в процентах от ВВП (график, кстати, из книги Тафти).
  • Горизонтальная ось — даты, здесь — года. Для слоуп графика важно, чтобы этих дат было мало, чаще всего две. Помимо дат, это могут быть периоды до/после или даже категории для сравнения.
  • Вертикальная ось — значение метрики, здесь процент поступлений.
  • Линии — соединяют значения метрики по каждой стране.
Слоуп графики хорошо помогают визуализировать изменения между двумя точками во времени с помощью двух вертикальных осей, и они действительно немного напоминают лыжный склон. Ниже пример сравнения попарного барчарта и слоуп графика.
✏️ Правила
1
Подписывайте значения напрямую
В этом графике лучше не опираться на легенду, а подписывать значения напрямую. Как вариант, можно подписать названия у одной части, а значения у другой.
2
Пользуйтесь цветом эффективно
Базово можно красить несколькими способами:
  • Подсветить категории, которые выросли одним цветом, а упали – другим.
  • Раскрасить по категориям или их группам.
3
Можно показать не абсолюты, а ранжированные списки или процентные изменения
Этот прием сработает и для линейных графиков. Иногда, вместо того чтобы показывать абсолютные значения, гораздо удобнее будет оценить их изменения.

Бамп чарт

Бамп-чарт (bump chart) — это разновидность линейного графика, который используется для отображения изменений в рейтинге с течением времени. Он отлично подходит для спортивных визуализаций и всего, где есть позиции/места.

На картинке ниже пример бамп-чарта, показывающего популярность разных программ бакалавриата:
  • Горизонтальная ось — даты, здесь — года. Часто могут быть временные интервалы (например, этапы гонки).
  • Вертикальная ось — отранжированное значение метрики. Главное отличие от предыдущих графиков — здесь вертикально мы показываем ранг, а не фактическое значение метрики.
  • Линии — соединяют значения метрики по каждой программе.
✏️ Правила
1
Небольшое количество категорий
Такие графики плохо считываются при большом количестве категорий. Строгого правила нет, но я бы порекомендовала использовать не более 15 (+-5) категорий.
2
Только для данных, в которых отранжированное значение имеет смысл
Такие графики подходят, когда важен отранжированный порядок и его изменение, а не точные значения каждой метрики. Акцент делается на относительных изменениях. Например, для отображения того, как изменялась позиция объекта (например, компании, региона или продукта) по сравнению с другими.
3
Можно сглаживать линии для плавности тренда
В линейных графиках линии лучше не сглаживать, так как это может создавать иллюзию несуществующих точек между реальными значениями. В бамп-чартах сглаживание вполне допустимо, потому что в этих графиках очевидно, что значения между периодами дат не существуют, и линия лишь визуализирует изменения позиций.
4
Подписываем категории и их ранк
Так как фокус идет на ранжированные значения, хорошим правилом будет подписывать сам ранк (место по порядку) и категорию, которая этот ранк занимает. Чаще всего ранк подписывают слева, категорию — справа.
5
Аккуратная работа с цветом
Если у вас больше 5-7 категорий на графике, попробуйте красить цветом не все, а:
  • Сгруппировать часть в "другое".
  • Фокусно выделить одну категорию, сделав остальные серыми.

Областная диаграмма

Областная диаграмма (area chart) — это линейный график с заполненной областью под линией. Такая визуализация помогает показать объем изменений, но также накладывает свои ограничения.

На картинке ниже пример областного графика:
  • Горизонтальная ось — даты, здесь — месяц и год.
  • Вертикальная ось — значение метрики.
  • Линии — соединяют значения метрики в каждый месяц года.
  • Область под линией — заполняет пространство под линией.
✏️ Правила
1
Отрывать ось от 0 в областных диаграммах категорически запрещено
В таких графиках помимо анализа линии динамики, важно учитывать и область под ней, которая используется для сравнения. По сути, мы сравниваем площади под линией между промежутками времени, аналогично тому, как это происходит в барчартах. Если ось оторвать, то можно исказить восприятие этих сравнений.
2
При добавлении нескольких категорий друг за другом использовать прозрачность
При добавлении нескольких категорий друг за другом хорошей практикой будет использование прозрачности, чтобы визуально разгрузить график и сделать его более читаемым. Для дэшбордов, как правило, лучше заменить такой график на линейный, так как он проще воспринимается. Однако для дата-журналистики это может быть хорошим приемом — такой формат привлекает внимание и побуждает пользователя исследовать данные, углубляться в детали.
3
Если категории кладутся друг на друга, они обязательно должны суммироваться
Если категории кладутся друг на друга, важно, чтобы их значения суммировались, и высота всех категорий вместе равнялась сумме всех этих категорий.
  • Если задача — показать среднее значение по категориям, то областная диаграмма не подойдет. В этом случае лучше использовать другие типы графиков, например, линейный, чтобы корректно отображать динамику и статистические показатели.
  • Если значения между категориями не уникальны (например, количество пользователей, где каждый может принадлежать к нескольким категориям), то также стоит рассмотреть линейный график, который позволит точно отображать изменения, избегая перегрузки информации.

Стримграф

Стримграф (streamgraph) — это тип визуализации, который отображает изменения нескольких категорий данных во времени. Он похож на областной график и при этом имеет органичную и плавную форму. Он позволяет легко отслеживать, как разные категории данных изменяются во времени, создавая «потоки», которые плавно перетекают друг в друга. За это его иногда называют диаграммой "река" или "потоковой диаграммой".

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

На картинке ниже пример стримграфа, который показывает, с кем автор визуализации проводил время:
  • Горизонтальная ось — даты, здесь — года.
  • Вертикальная ось — значение метрики, здесь — количество проведенных часов.
  • Область / поток — величина метрики в категории.
Фактически, это областная диаграмма с несколькими категориями, но с уникальной особенностью — смещением относительно горизонтальной оси.
✏️ Правила
1
Категории должны сменять друг друга
Такие графики хорошо смотрятся, когда объем категорий сменяется друг другом. Например, популярность музыкальных или кино жанров.
2
В один период не больше 5 категорий
Все разграничение категорий здесь основывается на цвете. В один период времени (например, 1 год) лучше не добавлять более 5 категорий.

Спарклайн

Спарклайны (или искрографики, sparkline) — это особый тип маленьких графиков, придуманных Эдвардом Тафти.

Это компактные графики с минимумом подписей и обозначений, обычно размещенные в строках таблиц или рядом с KPI-карточками. Чаще всего они используются для визуализации динамики и быстрого понимания паттернов, когда нет необходимости в детальном анализе метрики, а нужно лишь уловить общий тренд.

Обычно спарклайны — это маленькие линейные графики, но также могут встречаться мини-барчарты или гистограммы.
✏️ Правила
1
Минимум подписей
Если спарклайн размещен рядом с KPI-карточкой, рекомендую вывести ось дат и выборочно несколько значений (например, первые и последние или минимальные и максимальные).
2
Эффективное использование цвета
Можно использовать цвет для выделения значительных изменений, таких как резкий рост или падение. Это поможет быстро привлечь внимание к важным точкам данных, позволяя пользователю сфокусироваться на ключевых моментах динамики без перегрузки информации.

KPI карточки

KPI карточка (BAN, индикатор или фактоид) — это группа визуализаций, которая отображает ключевые показатели эффективности (KPI) на дэшбордах и в отчетах. Она часто включает в себя числовые значения, которые показывают текущие результаты, а также прогресс по сравнению с целями или предыдущими периодами. KPI карточки могут содержать дополнительные элементы, такие как проценты изменения или индикаторы, например, стрелки или цветовые кодировки для отображения роста или падения.

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

Основные элементы KPI карточки

Каждая KPI карточка должна фокусироваться на одной ключевой метрике.
Внутри должна быть:
  • Дата, за которую отображается метрика — это гарантирует, что пользователям не придется угадывать временные рамки.
  • Название метрики — базовый, но важный элемент. Можно также вписать более детальное описание метрики в тултип. Сделайте название простым и читаемым: например, "Общее количество заказов" → "Заказы".
  • Значение метрики за указанный период — без этого карточка KPI не будет иметь смысла.
  • Контекст для метрики — помогает пользователям понять, является ли текущее значение метрики хорошим или плохим. Например, это может быть изменение за период, сравнение со средними показателями или целевыми значениями.
  • Спарклайн — чтобы показать общий тренд метрики.
✏️ Правила
1
Шрифт и визуальная иерархия
Используйте четкий, легко читаемый шрифт без засечек (sans-serif) и проверьте, чтобы цифры были различимы (например, "0" должен легко отличаться от буквы "o").

Важно также соблюдать визуальную иерархию текста:
  • Более крупный размер шрифта для значения метрики.
  • Чуть меньший размер шрифта для названия метрики.
  • Еще меньший размер шрифта для контекстной информации.
2
Добавляйте контекст
Пользователи должны легко понимать, текущее значение метрики — это хорошо или плохо. Выбор того, какую контекстную информацию добавить, зависит от метрики и ее природы. Можно добавить:
  • Сезонные сравнения, такие как MoM, YoY или QoQ, если вас интересует общий рост и тенденция метрики во времени. Например, продажи или выручка.
  • Сравнение со средним значением, если нужно показать стабильность и добавить понимания того, работает ли метрика выше или ниже типичного уровня. Например, такие показатели эффективности, как открываемость писем (open rate) или показатель отказов (bounce rate). Можно рассмотреть и другие статистические сравнения, например с медианой или перцентилем.
  • Достижение цели — в том случае, если у вас есть план. Если есть, проще отслеживать его на карточке KPI.
Еще один момент, который следует учитывать при добавлении контекста - это включение измерений, которые могут повлиять на общую тенденцию метрики. Например, регионов или категорий.
3
Используйте цвет и символы
  • Применяйте ассоциативные цвета: 🟢 зеленый цвет для положительных изменений и 🔴 красный для отрицательных. Если вы не уверены, хороши или плохи изменения, выберите более нейтральную палитру, например 🔵🟠 сине-оранжевую.
  • Включайте символы, например стрелки или даже эмодзи, для быстрого распознавания, например ↑↓ ▲▼
4
Консистентный дизайн
Карточки на одном дэшборде должны быть похожи по дизайну, чтобы пользователям не приходилось «учиться» интерпретировать каждую из них.
  • Для общей симметрии лучше использовать выравнивание по левому краю.
  • Поддерживайте равномерное расстояние между элементами внутри карточки, чтобы обеспечить читаемость и визуальный баланс.
  • Если разные карточки KPI предоставляют различные типы контекстной информации (например, вариант оформления сравнения MoM и со средним), лучше сделать их визуально различными. Однако это визуальное кодирование все равно должно соответствовать общему дизайну дэшборда.
Графики динамики являются важными инструментами для визуализации изменений во времени и анализа трендов. Каждый из этих типов графиков имеет свои особенности и лучше всего подходит для определенных задач:
  • Линейные графики идеально подходят для отображения динамики и трендов в данных. Однако важно помнить о правильной настройке осей и избегать двойных осей.
  • Слоуп-графики упрощают линейные графики, эффективно показывая изменения между двумя точками во времени с фокусом на их относительные различия.
  • Бамп-чарты позволяют визуализировать изменения в рейтинге, показывая, как позиция объектов меняется по отношению друг к другу.
  • Областные графики и стримграфы дают визуальное представление не только о динамике, но и об объеме данных, подчеркивая изменения в величине метрики и ее сравнении с другими категориями.
Для всех этих графиков важно соблюдать принципы ясности, аккуратности и последовательности в отображении данных. Особое внимание стоит уделить KPI карточкам и спарклайнам, которые позволяют отображать ключевые метрики и их изменения на дэшборде, минимизируя визуальный шум.

Урок 1

Убираем лишнее и фокусируем внимание

Урок 2

Как работать с цветом в визуализации

Урок 3

Графики сравнения и ранжирования

Урок 4

Визуализация времени

Урок 5

Визуализация распределений и отношений

Урок 6

Часть от целого и Про карты

Урок 7

Таблицы

Урок 8

Текст в визуализации

Урок 9

Дэшборд и правила его дизайна

Урок 10

UX дэшбордов

Бонус

Про стайлгайды

Заключение