Алгоритм Δλ — пошаговый рецепт создания визуализации

Лекция

Мы с вами посмотрели, какие бывают классные визуализации, какие принципы, делают их такими классными. И сейчас я хочу вас достаточно быстро провести за руку по тому, что я называю алгоритмом визуализации сложных данных.

Мы сейчас не будем подробно останавливаться на каждом шаге. Сейчас нам нужно просто увидеть большую картину, как это вообще всё работает. И после этого мы уже погрузимся непосредственно в конкретные шаги.

Шаг 1. Описать реальность данных

Итак, с чего мы начинаем работу с данными. Мы начинаем работу с данными с того, что пытаемся за таблицами, за базами данных, за теми данными, которые пришли нам на вход, увидеть какую‑то большую целостную картину тех процессов, которые эти данные порождают. И эту картину я называю «реальность данных».

Мне кажется очень важным то, что у нас именно такой первый шаг. Что это даёт? На всех визуализациях, которые мы с вами посмотрели, мы видели эту большую картину. То есть мы всегда даём пользователю какую‑то большую картинку с мыслью о том, что он может в ней рассмотреть закономерности, аномалии, что он какую‑то вот эту целую картину видит.

Если мы этот шаг пропускаем, если мы просто берём те таблички, которые пришли нам на вход, и начинаем их визуализировать, то мы, не увидев целого, визуализируем только какие‑то срезы. И мы ничего не знаем о том, как эти срезы дружат между собой. Эту целую картинку мы должны увидеть именно, чтобы понять какие‑то связи, которые у нас есть в тех таблицах, которые приходят на вход.

Без этого шага визуализация будет разрозненным набором графиков, диаграмм, которые ничего друг о друге не подозревают. И, скорее всего, классной визуализации, которая проявит что‑то на макроуровне, у нас не получится.

Шаг 2. Выделить частицу данных

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

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

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

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

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

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

Шаг 3. Перенести частицу данных на экран и проявить свойства частицы за счёт визуального атома

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

Вот эту штуку, за счёт которой мы переносим частицу данных, мы называем визуальным атомом. То есть визуальный атом — это, например, чёрная точка. Или это может быть цветная точка, если мы хотим передать какое‑то свойство цветом.

Или это может быть цветной кружок. Цветным кружком мы уже можем два параметра данных передать. То есть мы начинаем, ещё даже не задействовав никакие оси, уже материализовав наши частицы данных на экране и управляя их отображением, мы уже начинаем проявлять какие‑то измерения данных.

Например, здесь у нас проявлено два измерения, но так как это пока не какая‑то конкретная задача, а просто иллюстрация, мы не знаем, что это за два измерения, но мы знаем, что цветной кружок может показать два измерения данных.

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

Шаг 4. Задать каркас — связь экранных измерений и свойств данных

Следующий шаг алгоритма — это когда мы начинаем привязывать параметры данных к осям. Мы задаём каркас.

Каркас — это связь экранных измерений, вертикали и горизонтали. Вот у нас появилось два экранных измерения, мы начинаем к ним ещё привязывать параметры. Сколько ещё параметров это даёт нам проявить?

— Два.

— Да, совершенно верно. Никакого подвоха в этом вопросе нет.

Два параметра мы можем проявить на каркасе. Причём мы можем проявить и качественные, и количественные параметры. Это то, что Табло очень хорошо умеет делать. И дальше внутри этого каркаса мы можем по‑разному тасовать частицы, приходя к каким угодно представлениям и отвечая на какие угодно вопросы. Можно, например, посмотреть, как ранжируются сотрудники компании разного возраста по должностям, и так далее.

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

И вот у нас уже график, разброс по зарплате, по возрасту, и должность мы тоже здесь видим. Всё хорошо.

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

То есть, получается, на осях мы можем передать только два параметра, а вот за счет визуального атома мы достаточно много всего можем туда вложить. И эта суммарная многомерность визуализации, она как раз и складывается из двух измерений, которые у нас на осях и какого‑то количества измерений, которые мы вложили в визуальный атом.

Шаг 5. Добавить интерфейс управления данными и представлением данных

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

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

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

А если мы хотим иметь ещё возможность управлять тем, как мы показываем, то мы можем добавить ещё и интерфейс управления представлением.

Например, в качестве визуального атома у нас выбрана пиктограмма, а может быть выбрана фотография. И фотография передаёт уже вообще другой набор каких‑то характеристик.

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