Таня Бибикова

о визуализации данных и жизни

Курс по визуализации данных, 8, 9 и 10 декабря в Москве

8, 9 и 10 декабря мы с Ромой и Димой проведём в Москве учебный курс по визуализации данных.

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

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

Для тех, кто сомневается, насколько полезен лично ему будет курс, я собрала на хабре пять причин посетить курс по визуализации данных. А для тех, кто читает блог, по традиции скидка — 5 тыс. руб. (при записи в поле «Комментарий» сделайте пометку «из блога Тани»).

До встречи в Москве!

7 ноября   учебный курс

Лабораторный слёт на Байкале

В ноябре прошлого года мне написала Маша Комарова и пригласила в байкальский дизайнерский лагерь. Я согласилась, не раздумывая. Этим летом мы всей семьёй и всей лабораторной командой побывали в необыкновенных местах.

БДСЛ
Первые дни мы провели в лагере, в посёлке Большие Коты (ударение на первый слог). Дорога от дверей дома до гостиницы в Котах заняла 28 часов: выехали утром, приехали в обеде следующего дня. Но вид с балкона того стоил:

В лагере я провела мастер-класс по визуализации данных — одно из немногих моих выступлений, которым я безоговорочно довольна. Сосны и Байкал в открытых окнах аудитории добавляли мне спокойствия, а моему рассказу последовательности и ясности. Кроме выступления, лагерь запомнился классной атмосферой научной биостанции, посиделками у костра, беседой на берегу озера и новыми приятными знакомствами.

Фото Юли Поздняковой

Спасибо Маше за чудесную организацию и гостеприимство! Всё сделано с любовью и продумано до мелочей. Особенно умилили бейджики для малышей с формулировками вроде «Ты проживаешь в номере со своими мамой и папой» :-)

Яна и её «бэжик»

Харанцы
После лагеря мы перебрались на остров Ольхон, где провели ещё две недели с лаборантами.

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

Справа — наш домик, слева — столовая с верандой, которая служила нам коворкингом

От дома открывался ошеломительный вид на озеро и скалу Плывущий лев:

Наш дом справа за деревьями

Наблюдаю со своего балкона единственный рассвет, который мне удалось не проспать:

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

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

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

Закат без фильтров
Всё в сборе у костра, сфотографировал Кирилл Беляев

Самый классных досуг был у детишек. Они бегали по степи, лазали по деревьям и запускали воздушных змеев и парашюты.

Фотография Полины Ошурковой
Воздушный змей Саши и Лизы Моисеенко

Ещё нам вместе с малышами посчастливилось наблюдать, как суслик роет нору — он делал это прямо возле нашего дома:

Яна с Данилой были неразлучны ❤️

Экскурсии

За всё время на Ольхоне, мы несколько раз выбрались в столицу острова Хужир и съездили на две морские (потому что по Малому Морю) экскурсии.

Скала Шаманка в Хужире — сердце Ольхона и символ Байкала
На ритуальных столбах (сэргэ) паломники-буряты завязывают цветные лоскуты
Звериные тотемы, сфотографировала Яна

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

Посиделки на маленьком пляже

Поездки на катере по Малому Морю оставили ощущение сплошного концентрированного счастья.

Мы прокатились до острова Огой, по пути видели нерпу в бухте острова Замогой и запилили корпоративный лук на фоне сложенного из камней логотипа лаборатории в непосредственной близости от буддистской ступы:

Переплыли Малое море и прогулялись по противоположному берегу:

Обогнули мыс Хобой:

Проползли по узенькой пещере, чтобы вылезти на скале прямо над водой:

Лазали по валунам из белого мрамора, пока наш капитан, стоя по колено в воде, мощным бедром придерживал картер, который сносило волной:

Рассмотрели вблизи скалу Плывущий лев, на которую до этого любовались с берега:

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

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

Визуализация данных в Школе дизайнеров

Визуализация данных стала одним из предметов бюрошной Школы дизайнеров. Для меня и для лаборатории — это большой шаг.

То, что Артём поверил в наш подход и доверил вести занятия в школе — неожиданное и важное подтверждение того, что мы на правильном пути. Я беспокоюсь, что визуализация окажется очень сложным и не слишком нужным большинству дизайнеров предметом, но надеюсь, что будет хотя бы интересно. А для тех ребят, кто интересуется визуализацией и периодически спрашивает нас об онлайн-курсах, — это прекрасная возможность познакомиться с актуальной теорией и алгоритмом Δλ, а заодно получить другие бесценные знания.

Набор в школу открыт до 24 июля, старт занятий — 28 августа. На выполнение вступительного задания осталось всего 6 дней, поэтому не откладывайте. После 24 июля тоже можно попробовать, но не факт, что будут места.

Добавлю пару слов о школе, как работодатель. Из девяти лаборантов, которые сейчас работают со мной, двое прошли обучение в школе. Наташа (разработчик) — одну ступень, Ваня (дизайнер) — все три. Это не сделало их монстрами, мы многому доучиваем ребят не только по части программирования и визуализации, но и по тем предметам, которые были в программе школы. Зато, совпадение или нет, при выборе кандидатов на финишной прямой школа в обоих случаях сыграла роль. Наташа опередила более опытного разработчика без школьного образования, а Ваня — дизайнера с двумя ступенями за плечами. И я ни разу не пожалела о своём выборе. Для меня школа — это не столько знания и навыки, сколько отличительный знак бойца и единомышленника. Тех качеств, которые сложно проверить тестовым заданием.

Алгоритм Δλ: новая подача, учебный курс и БДСЛ

Весь прошлый год я работала над алгоритмом визуализации данных. Я сознательно избегала упрощения и стремилась к универсальности. Мне хотелось, чтобы алгоритм принимал на вход данные любой сложности и позволял получить максимально подходящую для них визуализацию, выраженную стандартными или нестандартными форматами. Но как любой гибкий и мощный инструмент, алгоритм оказался сложен для понимания и изучения. Даже после моего объяснения на курсе, некоторые участники не смогли применить его для решения своих, зачастую достаточно простых, задач. Да и развивать алгоритм было чем дальше, тем сложнее. Короче, перемудрила :-)

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

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

Изменится подача: я попробую раскрыть алгоритм от простого к сложному. Я уделю много внимания базовым форматам, разберу их с точки зрения алгоритма и покажу, как обогатить их данными и срезами. Это будет фундамент для решения большинства задач — польза всем. Оттолкнувшись от привычных форматов, мы с участниками курса вместе дойдём до «визуальных атомов» и «каркасов», и обсудим, как можно произвольно комбинировать их для решения более сложных и нестандартных задач. Это будет вход вглубь алгоритма, в очень важную (но далеко не всем нужную) его часть. На практике каждый участник сам решит, хочет ли он применить знания об алгоритме на стандартных форматах или копнуть вглубь. В работе с инструментами мы пошли тем же путём: мы знакомим ребят с Табло и d3.js, а на практике участники сами выбирают, что им ближе — быстрый результат или неограниченные возможности.

Курс пройдёт в Москве 17, 18 и 19 июня. А 22 июля я проведу четырёхчасовой мастер-класс по визуализации в Байкальском дизайнерском спецлагере. Там будет меньше времени и меньше практики, чем на нашем курсе, зато будут другие классные лекторы, посиделки у костра и Байкал! По традиции читателям блога — скидка 5 тыс. руб. на курс (при записи в поле «Имя и фамилия» сделайте пометку «из блога Тани»). Насчёт скидки на БДСЛ ничего не знаю, просто передавайте Маше от меня привет :-)

До встречи этим летом!

Лабораторная зимовка на Самуи

Этой зимой мы впервые за долгое время решились на дальнее путешествие: провели месяц в Таиланде, на острове Самуи. Для меня это был рискованный эксперимент, потому что я позвала с собой лабораторную команду, при этом времени на подготовку и планирование поездки почти не было. Эксперимент удался на все сто, мы с Димой и Яночкой зарядили батарейки и здорово провели время, ребята тоже довольны.

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

Самуи

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

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

На Самуи много живописных и интересных мест. Заскучать не успели, поэтому в этот раз никуда с острова не уезжали.

Скалы Прадедушка и Прабабушка
В секретном саду Будды
На Серебрянном пляже

Путешествие с Яной

Самым сложным во всём путешествии был ночной перелёт Москва-Бангкок, в котором Яна не заснула. Я, уже сама как варёная рыба, ходила с ней по тёмному спящему самолёту, очень-очень долго. Лететь так далеко с ребёнком на неделю-две утомительно. Только придёшь в себя от дороги, пора уже собираться обратно. На месяц — норм, а лучше на два! На обратном пути мы были умнее, и на ночь сделали остановку в Шереметьево. Дорога показалась намного более лёгкой.

На острове Яне понравилось: тепло, весело, интересно. К ней сам собой вернулся дневной сон, а за компанию и мы частенько устраивали сиесту.

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

Из детских развлечений нам больше всего понравилась поездка к слоникам. Яна была в полном восторге, кормила их бананами, сама захотела покататься и бесстрашно проехалась со мной по джунглям на слоне по имени Рокки.

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

Зимовка лаборатории

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

На Самуи приехали семеро из десяти лаборантов, с семьями и детьми получилось 15 человек. С жильём на Бопуте оказалось непросто. В итоге все нашли подходящие варианты, но оказались в разных частях пляжа, поэтому логистика совместной работы была затруднена. Мы пробовали собираться в кафе, друг у друга в гостях, какие-то дела обсуждали даже на детской площадке. Конечно, удобнее жить всем вместе, и в следующий раз мы попробуем найти такое жильё заранее.

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

Мы проводили вместе много свободного времени: собирались на ужин, ездили вместе на дальние пляжи, устраивали посиделки у моря с самодельной пинаколадой. Детишки общались и играли, случался даже совместный тихий час.

Перед отъездом мы устроили спонтанную масленицу, ели блины с начинкой из манго и бананов. Незабываемый опыт!

В сердце остался ворох тёплых, солнечных воспоминаний. Спасибо, ребята!

Задавайте вопросы про зимовки в целом и Самуи в частности, буду рада ответить. Всем ☀️️

Моё вдохновение

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

Мне особенно дороги композиции, которые связаны с поворотными жизненными моментами. Они запускали новые процессы в мозгу, помогали увидеть проблемы, вдохновляли на перемены и давали силы на движение в новом направлении. Большая часть поворотных моментов — глубоко личные, но, что удивительно (или нет?), большие профессиональные шаги я тоже делала «под музыку». Я верю, что музыка передаёт больше, чем слова, поэтому хочу поделиться своим музыкальным вдохновением. Вдруг кому сгодится :-)

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


Начало 2011 года. Я уютно устроилась в «Нет-крекере», у меня своя команда, интересные проекты, важные совещания, командировки. У меня, наконец, есть время и деньги на себя (элитный фитнес, бассейн с тренером, салоны красоты, рестораны и вечеринки). Каждое утро в инбоксе — новые задачи, запросы, предложения. Их генерирует безликая корпоративная машина, которую я обслуживаю. С творчеством Регины Спектор я знакома давно, но случайно всплывший в плейлисте трек цепляет за живое. Регина поёт о страхах, о тревоге, о невозможности распоряжаться собственным временем — и о том, что есть другой путь.

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


Лето 2013 года. Я только что открыла Лабораторию данных, наняла первых сотрудников, сама веду клиентские проекты. Мне впервые в жизни нужно заботиться не только о себе и своих потребностях (которые я научилась запросто «смирять»), но и о других людях: платить зарплаты, искать интересные задачи, «строить» и вдохновлять. Сложностей предостаточно, будущее туманно. Периодически накатывает страх, мозг заполняют тревоги и сомнения, за ними приходит неуверенность в своих силах. В такие моменты я спасаюсь бегством (буквально, иду на пробежку, благо, именно в это время я готовлюсь к марафону и тренироваться нужно почти каждый день) и слушаю музыку. Этот трек «Гоголя Борделло» о глубине погружения и вере в выбранный путь стал моим личным гимном. Я до сих пор включаю его, когда лаборатория переживает сложные моменты.

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

Интересные визуализации — 2016

Главные события прошлого года в мире визуализации данных: выборы президента США и Олимпиада в Рио.

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

Дерево возможных путей к победе, NYT:

Управляя явкой и голосами разных слоёв населения на мини-графиках, меняем картину по штатам:

Шансы на победу, которые менялись в режиме реального времени:

Элегантные информативные форматы прямой трансляции в твиттере @nytgraphics:

Изменяющиеся предпочтения по штатам:

Сдвиг голосов на карте:

Анализ экзитполов:

Карты, составленные из мини-графиков:

Изменяющиеся предпочтения по штатам
Изменяющиеся предпочтения по штатам и округам
Результаты голосования по штатам и округам, акцент на «полярность»

Впечатляющая карта, которая проливает свет на принципиально разную поддержку кандидатов:

«Нью-йорк-таймс» выпустил несколько завораживающих визуализаций по результатам Олимпиады в Рио.

Победа Усейна Болта на стометровке в 13 стоп-кадрах:

Обновлённый новыми результатами график отставания бегунов от Усейна:

Падение и победа Мо Фарах на 10-километровой дистанции:

История олимпийских медалей:

Соотношение выигранных медалей среди мужчин и женщин в разных странах:

Много внимания досталось юной звезде спортивной гимнастики, Симоне Байлз. Интерактивный рассказ о спортсменке:

Фото-визуализация (frame by frame) её победных упражнений:

График сложности элементов, выполняемый Симоной:

Гениальная визуализация результатов забегов и заплывов гифками в твиттере:

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

Необычный способ визуализации связей на диаграмме «Кто на ком женат»:

Культурные различия в США на основе популярности сериалов — безумно интересно изучать:

Визуализация берлинского марафона:

Наша визуализация Московского марафона, которая в этом году получила бронзовую медаль на Малофее:

Исчерпывающая статистика по игрокам NBA, все графики интерактивно связаны между собой:

Детальные сценарии развития событий на Евро—2016:

Симпатичная визуализация цитируемости научных статей в стиле обложки альбома Unknown Pleasures, Joy Division:

Ураганы в окрестностях Флориды — визуализация крупных (именованных) ураганов, которые «аттаковали» Флориду или проходили поблизости, за последние 100 лет:

Повышение температуры океанов с 1900 года:

Риск наводнений, ураганов и землетрясений в разных странах, ознакомьтесь перед путешествием :-)

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

Фотографии небесных тел с сортировкой и фильтром по планете:

Интерактивный плакат об акулах от National Geographic; ныряльщик для масштаба, зубы в натуральную величину:

Алгоритм Δλ: реальность данных и каркас визуализации

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

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

Временная ось, вдоль которой раскрываются траты из личного бюджета:

История голосования разных штатов — не самый очевидный на первый взгляд формат. На деле, простая комбинация из визуальных атомов — линий-штатов, на каркасе временой оси и оси процентного преимущества победившего кандидата:

Ландшафт может быть многомерным, тогда нужно придумать, как его свернуть в плоскую картину. Например, схема маршрута и временной слайдер на визуализации Московского марафона:

Схема линии и временные интервалы на диаграмме загруженности Московского метро:

Результаты забега на стометровке — время финиша трансформировано в отставание (в метрах) от последнего мирового рекорда:

Если вы без труда выбрали осмысленные оси для обоих экранных измерений и получили интересный результат — ура, вам повезло! Подумайте, чем дополнить основной каркас и какие интересные измерения остались за кадром.

Например, визуализация Московского марафона дополнена интерактивной картой высот (оси— координата на дистанции и высота над уровнем моря) и диаграммой финишей (бегуны вдоль оси времени):

Траты личного бюджета можно перегруппировать по категориям или по времени суток/дню недели:

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

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

И из распределения частиц данных вдоль разных осей:

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

Может быть дополнена сводными данными, усреднёнными по городам и показаными на одном графике:

И диаграммой среднестатистических недель по городам:

Объединим эти каркасы с помощью интерактивной связи в одну визуализацию и увидим множество срезов данных как на ладони:

Другие примеры комбинированных каркасов. Таймлайн + карта:

Карта + хитмеп:

Несколько однотипных графиков:

И даже последовательности однотипных графиков:

http://www.nytimes.com/interactive/2012/11/30/us/tax-burden.html?_r=0 http://www.nytimes.com/interactive/2012/11/30/us/tax-burden.html?_r=0

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

Чтобы познакомиться с нашим алгоритмом «из первых рук» и научиться его применять, приходите на курс по визуализации данных, который я проведу в Москве, 8 и 9 октября.

Следующая теоретическая заметка выйдет 28 ноября.

Алгоритм Δλ: каркас визуализации и виды осей

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

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

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

С непрерывными осями мы знакомимся в школе, когда строим параболы:

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

График из двух непрерывных осей с точками-объектами:

Иногда на осях отмечают средние значения, и график делится на осмысленные квадранты («дорогие результативные игроки», «дешёвые результативные» и т. д.):

Также на графике можно провести лучи, они покажут соотношение параметров, отложенных по осям, которое само по себе может оказаться значимым параметром (в данном случае, конкуренция в отрасли):

Для наглядного отображения параметра с большим разбросом значений используют ось с логарифмической шкалой:

Оси пространства и времени
Важный частный случай непрерывных осей — оси пространства и времени, например, географическая координата или линия времени.

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

Основой визуализации бывает одна непрерывная пространственная ось, например, погружение вглубь океана, в недра Земли или подъем в высоту:

Ещё один пример логарифмической оси

Графики с временной осью — первые абстрактные графики, которые положили начало визуализации данных:

И с успехом применяются до сих пор:

Ещё один способ показать временное измерение — дополнить пространственную картину слайдером:

В исключительных случаях пространство и время получается совместить на плоской карте или вдоль одной оси:

Карта наступления Наполеона на Москву в 1812 году
Диаграмма экспедиций Амундсена и Скотта

Интервальная ось
Интервальная ось разделена на отрезки (равные или неравные), которым ставится в соответствие значение параметра по определённым правилам. Интервальная ось подходит как для качественных, так и для количественных параметров.

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

Название штата — чисто качественный параметр, каждому штату соответствует один шаг по вертикали. Год — непрерывное временное измерение, редуцированное до годовых интервалов. Каждому году соответствует один шаг по горизонтали.

Интервальные оси с мелким шагом (дни года по горизонтали, часы суток по вертикали) дают очень подробную, почти «непрерывную» картину:

Две интервальные оси не обязаны превращаться в хитмеп:

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

Другой пример комбинации интервальной и непрерывной осей — диаграмма найма «Хантфлоу». По горизонтали отложены этапы собеседования (качественный параметр), по вертикали — количество кандидатов на этапе:

Слоистая ось
В одно экранное измерение можно уложить сразу несколько осей (непрерывных и интервальных). Чаще всего этот приём работает с таймланами, когда на одну временную ось накладываются слои с данными, текстами и графикой:

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

В комиксе о высоте Вселенной горизонтальное измерение также вырожденное.

Данные формата «было-стало» чаще всего требуют вырожденной оси:

Но она не обязательно «съедает» экранное измерение:

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

Равномерная сетка
Ещё один способ использовать пространство экрана — заполненить его последовательными блоками по сетке. Объекты внутри сетки упорядочены линейно, например, по алфавиту:

По размеру города:

Или по номеру билета:

Сетка подстраивается под размер экрана и не имеет ярко выраженной горизонтальной и вертикальной направляющих.

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

В следующий заметке я расскажу, как выбрать из множества измерений реальности данных те, что станут хорошим каркасом и отвечу на вопросы Дениса и Ивана.

Чтобы познакомиться с нашим алгоритмом «из первых рук» и научиться его применять, приходите на курс по визуализации данных, который я проведу в Москве, 8 и 9 октября.

Следующая теоретическая заметка выйдет 26 сентября.

Алгоритм Δλ: ответы на вопросы

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

Элементарные частицы и визуальные атомы
Спрашивает Юлия Торгашова:

Я ломаюсь на элементарных частицах. Не могу экстраполировать на разные виды «частиц». Например, вот визуализация бюджета города, что в ней «элементарная частица» — деньги? учреждения? мероприятия? Про визуальные атомы при этом понятно.

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

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

В моих рассуждениях уже несколько раз промелькнула элементарная частица — отчисление, однократное перечисление бюджетных средств в определённом размере (те самые рубли) в определённую организацию на определённые цели (например, на мероприятия), привязанное ко времени. Отчисления бывают периодические и нерегулярные, цель может состоять из нескольких уровней иерархии: на мероприятие → на организацию концерта → гонорар исполнителя. Из отчислений состоит вся расходная статья городского бюджета, при этом отчисления можно складывать между собой, сравнивать, отслеживать динамику. Если нужно визуализировать приход бюджета, используйте частицу-близнеца — поступление. Из поступлений можно составить картину формирования городского бюджета так же, как из отчислений — картину его использования.

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

Спрашивает Иван Печищев:

Как соотносятся визуальная частица и частица данных? Может ли у одной частицы данных несколько воплощений в визуальных частицах? Скорее всего, да. Как они соотносятся?

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

Визуальный атом — это воплощение частицы данных на экране. Одна частица данных может выражаться разными атомами. Например, путь кандидата на диаграмме «Хантфлоу» показан линией:

Мы могли бы дополнить диаграмму возрастным распределением, на котором кандидаты показаны точками:

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

Спрашивает Антон:

Я сломался после столбиковых диаграмм. Там начинается какой-то ад. Диаграмму с детскими садами вообще не понял — кажется, она прямо противоречит написанному. Либо я тупой, либо эти атомы лучше использовать с большой осторожностью :—)

В статье речь не о формате «столбиковая диаграмма», а о прямоугольнике, как способе представления данных. У прямоугольника два линейных измерения + площадь, их производная + цвет. Прямоугольники состоят из пикселей.

На диаграмме садиков, пиксель — это ребёнок. Группируем детей (пиксели) по возрастам, получаются прямоугольные области разного размера. Чем больше детей в возрастной группе, тем больше площадь прямоугольника. Если сделать все прямоугольники одной высоты, то их ширина отразит разницу в размерах возрастных групп. Представьте детей на площадке, пусть они станут рядом с ровесниками. Получится подобие вот такой диаграммы:

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

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

Ландшафт и каркас
Спрашивает Денис Балуев:

Мне, как давнему читателю, понятны почти все пункты. Кроме седьмого. Перестаю понимать отличия ландшафта от каркаса. Возможно, здесь помогли бы примеры.

Спрашивает Иван Печищев:

Очень интересен процесс «схлопывания ландшафта». Тут тоже может быть разная логика и методы. Скажем, есть технический чертёж, а есть живопись или детский рисунок.

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

Общие вопросы по алгоритму
Комментирует Михаил Калыгин (привожу только вопросы):

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

Не затронут важный шаг алгоритма — предобработка данных. Так или иначе, мы не можем работать напрямую с реальностью данных. Мы можем теоретически описать эту реальность данных. Мы можем также описать элементарные частицы. Но на практике мы имеем лишь срезы реальности, гиперплоскости, грязные данные (те же таблицы). Какие из этих грязных данных нас интересуют и могут помочь нам в ответе на вопросы задачи? Как их нужно преобразовать, чтобы нам было удобно с ними работать? Какие упрощения и допущения мы можем себе позволить в рамках этой конкретной задачи? Нужно как-то грязные данные сделать чистыми и связать с элементарными частицами и визуальными атомами. Как?

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

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

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

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

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

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

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

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

Как и обещала, три самых вдумчивых комментатора: Иван Печищев, Юлия Торгашова и Михаил Калыгин — получают скидку 5 тыс. руб. на осенний курс по визуализации данных. Огромное спасибо всем, кто отозвался!

Следующая теоретическая заметка выйдет 19 сентября.

Ранее Ctrl + ↓