12 заметок с тегом

разбор

Экспресс-разбор графиков о связи стратегических задач утром и уровня счастья

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

Максим провёл эксперимент:

Я являюсь адептом стратегии «начать утро с пусть небольшой, но стратегически значимой задачи». [...]

Буквально перед новым годом я запускаю очередной опрос, чтобы в частности проверить гипотезу: есть ли связь между уровнем счастья (измерялся по шкале из одного элемента: «В общем и целом на сколько вы счастливы?» [...]) и тем, как часто респонденты (по их словам) начинают день с чего-то важнго. Измерялось уровнем согласия с утверждением: «Я стараюсь начинать свой день пусть с небольших, но стратегически-важных задач» по шкале от 1 до 5 (в картинках для наглядности я свернул ее в шкалу из трех элементов: 1,2 — редко, 3 — иногда, 4,5 — часто). [...]

Уровень счастья я тоже свернул в два элемента: :-( — это меньше 6 из 10, а :-) — все остальное.

Эксперимент выглядит сомнительно, потому что большинство прошедших его счастливы минимум на 6 из 10. В это сложно поверить. Предполагаю, что тут присутствует ошибка выжившего. «Несчастные» просто не читают Максима :-)

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

Женщины и мужчины отдельно:

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

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

Цвета для кодирования полов

Всех с чего-то да подрывает. Меня расстраивает плохой дизайн. Иногда так свербит, что беру и переделываю. Но в этот раз расстроил не дизайн, а призыв делать плохой дизайн.

Прочитал статью Лизы Шарлотты Рост «Альтернатива розовому и синему: цвета для кодирования полов». Статья не всеобъемлющая, но глубоко освещает тему. Тут приведено 33 цветовые пары из реальных статей — вполне наглядно.

Что не так

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

So what’s the problem with pink & blue? In our western culture, these colors come with the whole gender stereotype baggage. Pink means weak, shy girls who play with dolls and don’t deserve as much as boys. Blue stands for boys who need to be strong & rough. When we create a chart with pink & blue, we endorse gender stereotypes. Especially when we chart gender (pay) gaps, that’s often the opposite of what we want to achieve.

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

Допустим, неравенства полов нет. Будет ли тогда волновать, насколько стереотипы мужские и женские цвета? Мне тоже грустно, что половина мужской одежды синяя, а вторая чёрная. Но это не повод усложнять читателям жизнь:

It’s not even necessary to explain the colors first.

Как можно такое писать в контексте визуализации данных?

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

Отдельно не понимаю, почему сила обязательно холодная, а слабость — тёплая.

Что так

1. Лиза пишет, что вредно менять стереотипные цвета местами — красить розовым мужчин и синим женщин:

I’m afraid that this is dangerous. Charts that flip the stereotypical colors can be hard to read: If readers see pink & blue in a chart about sexes, they won’t be very likely to consult the legend.

Не удивлюсь, если «Кварц» тестирует гипотезы. Тесты, конечно, не оправдываю дискомфорт читателей. 

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

The colors are inspired by the “Votes for Women” campaign in the UK as part of the initial suffrage movement in the early 20th century.

“When deciding which gender aligned with which color, it was more a case of trying to prioritize women in the order of genders. Against white, purple registers with far greater contrast and so should attract more attention when putting alongside the green, not by much but just enough to tip the scales. In a lot of the visualisations men largely outnumber women, so it was a fairly simple method of bringing them back into focus.” —Fraser Lyness

Что было бы полезно

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

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

3. Не использовал бы для одного из полов чёрно-белые оттенки. Они тоже приводят к визуальному неравенству. В зависимости от фона могут приводить к ситуации из 2-го пункта. Чёрный с чёрным же текстом превратит пол в базовый, а второй цветной пол будет уже чем-то отличаться.

Серый легко превращается в выключенный или в не наполненный данными на фоне цветного.

Мелочи важные при визуализации данных

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

Разбор визуализации о рынке труда и оцифровке профессий

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

Предмет разбора

Меня привлекла работа Стива Левина для Аксионс об оцифровке профессий, изменении зарплат и числа рабочих мест в США:

Привлекла внешней простотой, аккуратностью и тем, что в ней легко копаться. Закопавшись, понял, что она иллюстрирует только заголовок «People in highly digitized jobs earn more...» (Люди с высоко оцифрованный работой зарабатывают больше). Это видно из положения оранжевого и фиолетового облаков стрелок. Мне связь зарплаты с оцифровки очевидна, поэтому полез разбираться, что в визуализации ещё интересного.

Визуализация построена на данных исследования Брукингского института. Вместе с отчётом институт опубликовал визуализации. Можно посмотреть на те же данные под другим углом. Тут акцент на степень оцифровки, но совсем не показаны зарплаты:

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

Устройство и ошибки

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

Сначала — каркас. Тут два измерения со степенными шкалами: икс — средняя годовая зарплата, и игрек — число рабочих мест. Каждая стрелка — профессия. Основание стрелки — зарплата и число мест в 2012-м, остриё — в 2016-м.

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

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

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

Цвет отвечает за оцифровку профессии на 2016-й, у него три дискретные шага: слабая оцифровка, средняя и сильная. Вижу две проблемы:

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

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

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

Cвой подход

Вспомнил работу Нью-Йорк Таймс о профессиях и соотношении полов на рынке труда среднего класса США в 1980 и 2012. C визуализацией данных тоже помогает насмотрелось, мозг сам вспоминает похожие форматы и структуры данных.

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

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

Гипотеза 1.0. Показывать зарплаты графиком наклонов (slope chart) — так называют графики из примера выше. Разбить профессии на группы по одной оси, чтобы упорядочить кашу.

Гипотеза 2.0. Смотрю, какие ещё классифицированные графики работают с похожими «вводными» (блок «Input» справа). Показывать зарплаты горизонтальными гантелями (dumbbell plot).

Гантели не работают. По иксу — зарплата. Вершины гантели — зарплаты за 2002 и 2016 года. Но понять, где какой год не получится, потому что зарплата могла как расти, так падать:

А графики наклонов выглядят перспективно. Тут 2002 всегда слева. Сразу видно, что реальное падение зарплат только у двух профессий — в колонках с номерами 29 и 27:

Проработка

Пробуем для оцифровки градиент насыщенности, но с ним ничего не видно. Поэтому вернёмся к комплементарным цветам.

Оказалось, что в данных группы профессий заданы только цифрами (они и видны в колонках сверху). Нахожу соответствие на сайте Аксионс. Переворачиваем всё на 90°, чтобы нормально читать названия групп. Экспериментируем с цветом.

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

А чтобы сравнивать рост ставок удобнее смотреть с логарифмической шкалой. Она показывает процентные изменения:

Логарифмическая шкала нагляднее показыват, что относительно самих себя зарплаты растут более-менее одинаково. Например, одним платят 1000 $, а другим — 5000 $. С инфляцией в США с 2002 по 2016 происходит вот что:

Чтобы труд не дешевел и не дорожал из-за инфляции, зарплаты должны меняться вслед за инфляцией. В 2002-м зарплат в 1000 должна превратиться в 1023,8 (1000×(100+2,38)/100), в 2003-м 1023,8 — в 1043. И так до 1366,4 $ в 2016-м. А зарплата в 5000 за это время превратится в 6832,1 $. В долях это одно и то же, а в долларах 366,4 $ против 1832,1 $.

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

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

Подробнее о шкалах читайте у Ромы.

Гипотеза 1.1.0. Агрегировать зарплаты по группам. Идея плохая — теряется куча данных и сглаживаются все аномалии:

Гипотеза 1.2.0. Показывать количество рабочих мест кругами на концах линий. Сначала смотрим на уровне групп. Картина непоказательная:

Гипотеза 1.2.1. Показывать только разницу и оставлять один кружок на том конце линии, который отвечает за год с больши́м числом рабочих мест. Опять не наглядно:

Гипотеза 1.2.2. Может, вместо кружков горизонтальные столбики?

В Табло так не получится. Откладываем идею, но смотрим, что вообще выходит из столбиков. Направление кажется перспективным.

Совмещаем их с заголовками и пробуем красить в зависимости от степени оцифровки. Разноцветные столбики плохо группируются в пары:

Убираем цвет. Сортируем по количеству рабочих мест:

Теперь столбики сливаются в одну массу. Придумываем красить их попарно цветом, который соответствует среднему между оцифровкой 2002-го и 2016-го. Это нечестные данные, потому что в промежуточные года данные были другими. Такие средние в целом не корректно считать, их нет в природе. Но тут оно помогает показать пары. К тому же у нас и так столбики — агрегация до групп, что тоже не очень корректно. В целом столбики показывают как дела на макроуровне, поэтому оставляем. Добавляем точные значения и подкручиваем цвета:

Чистовая вёрстка

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

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

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

Снова разбираемся с данными. Оказалось, что неправильно посчитали разницу. А спустя 2-3 попытки понимаем, что показывать разницу в процентах — плохая идея. Проценты считаются от исходного значения. Было 1000 мест, стало — 1100, это +10%. Если было 1100, а стало — 1000, это −9,1%. Количество мест одинаковое, а процентное изменение разное. Сравнивать такое некорректно. Вместо процентов, берём разы. Исхожу из того, что интересуют профессии, в которых были значительные изменения, поэтому предлагаю показывать кружок, только если изменение больше, чем в 1,5 раза.

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

Рома выложил прототип в Табло. Помимо описанного, там есть разбивка по образованию:

Экспресс-разбор визуализации налоговых ставок

В ноябре 2017-го Нью-Йорк Таймс выпустил работу Алисии Парлапиано и Адама Пирса об увеличениях и уменьшениях налоговых ставок в новом законопроекте Белого дома:

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

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

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

Столбикам предшествует такой экран:

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

Экспресс-разбор визуализации о пробках

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

Работа «Время в пути» Виллема Тулпа показывает автотрафик в Нидерландах за 1 ноября 2016-го:

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

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

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

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

Автор пишет, что участки без данных — серые, а с маленьким отклонением — синие (голубые). По-русски назвал бы «сизым». Эти цвета почти неразличимы на видео. Среднее отклонение красное, сильное — белое. Почему такой набор? Может, в честь Нидерландского флага, но зачем? Светофорный градиент сработает лучше.

Цвет и толщина линии — это плюс-минус понятно, а как работает смещение может быть не очевидно. Предполагаю, что так. Ровная дорога с датчиками:

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

А дальше хитрое алгоритмическое сглаживание, чтобы дороги не разрывались:

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

Автор ссылается на модель «Дорожных волн», которая объясняет поведение визуализированного типа пробок. И вот тут, мне кажется, главная ловушка. Классно же прям волнами показать эти «дорожные волны»:

Because of the displacement based on the deviation from the assumed normal travel time, the visualization shows clearly that traffic jams can move in waves. These waves move backwards, opposite of the driving direction of the cars.

Но визуализация получается сложная и не наглядная.

Как бы делал сам
Взял бы настоящую карту, например, Оупен-стрит-меп, чтобы проще было найти родную деревню и работало масштабирование. Увёл всё кроме дорог на задний план (высветлил и обесцветил). И красил бы участки дорог светофорным градиентом не отклоняя. А если нет отклонений, нормально сработают дороги естественной толщины. Это будет похоже на пробки в любом картографическом сервисе. И это хорошо, формат проверен и легко считывается.

Чтобы перемещаться во времени, добавил бы слайдер с получасовыми отметками. Чтобы смотреть, как текут «волны», оставил бы плей, но выключил по умолчанию. Перетекание «волн» будет за счёт движения градиента. Ещё попробовал бы под дорогой рисовать тень, интенсивность которой повторно закодирует отклонение от нормы. Так можно добиться эффекта, которого искал автор, только без искажений топографии. «Волны» будут видны не сбоку, а сверху. Дальше можно добавить выбор дня.

Ранее Ctrl + ↓