Блог Ромы Бунина

о визуализации данных и работе с Tableau

Население России с 1926 по 2017 год

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

Тоже решил поучаствовать. Сделал небольшую визуализацию:

А ещё у нас в декабре курс по визуализации. Таня расскажет про теорию, я про Табло, а Дима Семьюшкин про d3.js.

Возрастно-половая пирамида

Сегодня посмотрим на возрастно-половую пирамиду. Давно хотел сделать этот график. Наконец-то нашёл данные с 1995 года до 2050 (прогноз). Вот, что получилось:

Я использовал для визуализации прием Тафти — Small multiple. Он даёт классный обзор на все данные. Например, видно, что форма пирамид, почти одинаковая внутри континентов.

Если сгруппировать по континентам и запустить анимацию:

У России пирамида необычной формы и здорово видно, что наши мужчины живут значительно меньше женщин. Например, 80-90 летних женщин в 4 раза больше, чем мужчин.

Если включить абсолютные значения для оси икс видно, что по прогнозам Россия (RS на графиках) останется самой населенной странной в Европе.

Поиграть с прототипом здесь. К сожалению, из-за объема данных, всё очень тормозит. Ну, на то он и прототип.

22 октября   пример   табло

Billboard Hot 100

Сегодня был на джем-репетиции. Играл на басу, гитаре и клавишах:

Поэтому и анализ данных сегодня тоже про музыку. Я взял набор данных о хит параде Billboard Hot 100.

Вот, ещё одна из заготовок, которая у меня получилась. По клику на гифку, переход на прототип.

Цветом подсвечены пути песен, которые провели в чарте больше полугода. Фиолетовым — которые провели более полугода и попадали в топ 3 песен. Настраивая кол-во недель, которое песня провела в чарте, чтобы подсветить её на графиках можно найти множество закономерностей. Четко видно, что «долгоиграющих» хитов становиться всё больше, а скорость их взлета всё круче.

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

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

Интересно, что до 1995 года, в чарте не было ни одной песни, которая задержалась бы в нем дольше чем на 52 недели (1 год). Прям видно паттерн небольших холмиков по 10-20 недель.

Получился удачный каркас, видно историю каждой песни и общую картину.

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

21 сентября   пример   табло

Сколько времени играют в игры

Сегодня ещё одна зарисовка не тему игр. Только подойдем не со стороны игр, а со стороны пользователей. Я взял набор данных о 10 165 пользователей сервиса steam. Вот, что у меня получилось:

20 сентября   пример   табло

Обзоры игр с сайт ign.com

Сегодня решил посмотреть набор данных с kaggle.com о играх для компьютеров и приставок.

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

По-моему получился удачный каркас — на одном экране уместилось 12 587 игр, 30 жанров, 20 лет. Видно много всего — распределение жанров по кол-ву игр, распределение игр по балам, наиболее жирные года. А главное можно быстро найти игры с наибольшим рейтингом, скачать и поиграть. =)

19 сентября   пример   табло

Я спросил у Яндекса «Как…»

Альберто Кайро и Симон Роджерс в Google News Lab написали интересную статью, про поисковые запросы в гугл начинающиеся с How to.

Я решил повторить в миниатюре их эксперимент и собрал 40 тысяч записей из Яндекс Wordstat с похожими запросами.

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

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

А в Питере аномальный спрос на серил «Как я встретил вашу маму»:

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

Вообще с данными получилась какая-то белеберда. Мне плохо вериться, что реально вся странна спрашивает про счастье. Я вбивал в Wordstat слова без дополнительных операторов типа кавычек, скобок и восклицательных знаков. Если знаете как делать это более правильно — пишите в комментариях, буду благодарен за подсказки.

18 сентября   пример   табло

Широкие и длинные таблицы

Часто данные хранятся в виде таблиц. Таблицы бывают «широкие» и «длинные».

Человеку чаще удобнее читать матричные таблицы, а вот Табло заточено для работы с длинными таблицами на входе. Если таблица широкая, то в Табло есть специальный функционал Measure Values and Measure Names, однако он не позволяет использовать все привычные функции Табло, которые отлично работают с длинной таблицей. Например, по-другому работает фильтрация, привязка цветов и т. п.

Пересобрать таблицу из широкого формата в длинный, можно разными путями:
в экселе, с помощью формул или скрипта,
в экселе, с помощью надстройки Power Query,
в экселе 2016 и новее, с помощью Get & Transform,
R, при помощи библиотеки reshape,
в табло, при помощи встроенной функции.

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

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

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

Вставим эту таблицу как текст и поменяем названия столбцов:

Скачиваем и ставим надстройку Power Query — https://www.microsoft.com/en-us/download/details.aspx?id=39379
В экселе открываем её и задаем нужные преобразования:

После этого переименовываем столбцы и сохраняем результат:

Вуаля, наши данные готовы к работе с табло.

Видео, как обрабатывались данные — http://joxi.ru/YmEa0lVf068G3m

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

В этот раз рассмотрим визуализацию Нейтана Яу о количестве калорий в фастфуде.

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

Что не понравилось:
— Квадратики которые наслаиваются друг на друга.
— От верхних ресторанов далеко тянуться глазами до значений на оси.
— Нет возможности понять удельную калорийность продукта. Калории указаны на порцию, а не 100 грамм.
— Нет интерактивности и знакомых ресторанов. =)

Исправим всё выше перечисленное.

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

Скопировал данные в гугл таблиц:

Немного магии и форматирования и получил чистые данные:

Подключил данные к Табло:

Исправил те замечания, которые у меня были к исходной визуализации. Вместо квадратиков использую засечки и сделал переключатель [на порцию/на 100 грамм]. Ещё Кирилл Беляев помог мне подобрать цвета и подсказал с версткой.

Живой прототип — http://revealthedata.com/examples/fastfood/

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

Для создания переключателя я создал параметр, в котором хранится массив возможных осей:

Затем создал рассчитываемое поле и записал туда свитч-функцию. Далее использовал это поле как ось для графика:

Осталось только отобразить параметр и выбрать его внешний вид:

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

17, 18 и 19 июня пройдет наш курс по визуализации данных. На нём расскажу о том как использовать Табло для визуализаций и какие применяем при этом приемы и хитрости. Таня расскажет про алгортим визуализации, а Дима про d3.js. Будет интересно, обещаю!

UPD: Добавил поиск по блюдам.

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

В Лаборатория данных мы визуализируем данные: работаем над проектами, создаём методологию, проводим курс. Для вдохновения изучаем чужие визуализации, а лучшие публикуем в рубрике #Δλlikes. В этом году разбираем эти визуализации по пикселям.

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

Использован формат «уплотненного-баббл-чарта» — packed bubble chart, положение точки по оси икс — индекс риска, размер — количество людей под угрозой, цвет — индекс риска (это точно не указано в статье, но похоже, что так). Страны разбиты по строчкам континентов.

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

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

Попробую улучшить визуализацию. Иду смотреть источник данных и разбираться как считается индекс риска. Ещё смотрю какие данные используются в коде:

И как определяется размер точки. Видно, что индекс риска — это процент людей, которые подвержены риску от катастроф.

g.map(function (a) {
a.r = a.Population * a["Risk 2015"] / 100, a.x = a["Risk 2015"]
});

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

Скачаем данные (правда за 2016 год, а не 2015, как в статье) плюс добавим количество населения (данные за 2015 год). Используем вероятность и уязвимость, как оси для скетер-плота. Цвет и размер точек оставим, как ни исходной визуализации:

На графике сразу видно интересные особенности — вероятность катастроф в Голландии и Бангладеше одинаковые, но Голландия гораздо менее уязвима. И наоборот, в республике Чад и Гаити, вероятность катастроф небольшая, зато подготовка страдает.

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

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

Регионы теперь объединены не строками, а естественными границами континентов. Найти свою страну просто, все знают где она на карте. Расположим два отображения рядом. Точки сохраняют свой размер на обоих отображениях, и легко соотносятся между собой (например, Индия и Китай), но многие страны одинакового размера. Свяжем точки между собой наведением. Добавим подписи-комментарии, подробности при наведении на точку и мини-таблицы с лидерами рейтинга.

Вуаля:

Пощупать живой прототип здесь — http://revealthedata.com/examples/riskindex/

Прототип сделан на скорую руку в табло, чтобы показать саму идею.

А вот ещё пример packed bubble chart от команды NYT. Здесь формат работает классно и здорово выглядит. Есть поиск, динамическое разделение на индустрии, указаны средние значения. Единственное, что я не понял — цвет тоже дублирует положение по оси икс. Интересно мнение читателей, зачем это нужно?

Курс — Introduction to Infographics and Data Visualization

Удалось пройти замечательный курс Альберто Кайро (сайт автора). Курс организован на базе Knight Center for Journalism in the Americas. К сожалению, я проходил курс уже по завершении основной части, поэтому не смог поучаствовать в домашних заданиях и групповой активности. Курс хорош, есть про всё — цель визуализации, данные, типографику, общие правила композиции, как выбирать подходящие типы графиков и т. п.

Основное, что унёс с курса:
— Самая сложная и интересная задача — это не сделать «визуальную» составляющую, но продумать сценарий использования и историю, которую мы хотим рассказать

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

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

Визуально не выделено основная идея

Есть контраст на главном

— Основа хорошей композиции: единство стиля, разнообразие деталей и иерархия повествования. Единства и иерархии можно добиться версткой (например, модульной сектой), шрифтами и цветами.

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

— Для одних и тех же данных можно использовать различное визуальное кодирование в зависимости от решаемой задачи. Можно использовать несколько «слоев» представления одних и тех же данных.

— На каждое действие пользователя нужна обратная связь.

— Мантра визуализации — нужно предоставлять данные пользователю в следующей последовательности: общий обзор данных → возможность зума и фильтрации данных → дополнительная информация по запросу. Оригинал — Overview First, Zoom and Filter, Then Details-on-Demand

— Когда Ханс Рослинг ведёт презентации он представляет себя футбольным комментатором.

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

2016   курсы

Сборник сборников лучших визуализаций

Как водится, в конце года все собирают списки top чего-нибудь. Я решил не нарушать такой традиции и собрал список таких списков. =)

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

  1. Список лучших визуализаций от Лаборатории данных
  2. Победители конкурса The Kantar Information is Beautiful
  3. Подборка от сайта visualisingdata.com
  4. Самые лучшие визуализации NYT
  5. Самые популярные визуализации на сайте www.informationisbeautiful.net
  6. Лучшие проекты по мнению Нейтана Яу
  7. Лучшие картограммы 2015 года по мнению infogr.am
  8. Подборка от компании visual.ly
  9. Подборка работ выполненных в tableau public
  10. 100 лучших визуализаций по мнению visualoop — часть 1, часть 2
2015   пример

Открытые государственные данные

Искал какой бы датасет проанализировать на выходных... Пошёл на Портал открытых данных Российской Федерации.

Самый интересный и полезный датасет, который нашёл (может я как-то не так ищу?!?) — стоимость шаурмы в разных странах. Причем здесь открытые данные Российской Федерации? O_o Свеженький датасет...

Нашёл компании, которые собирали датасет — госбук и госбук лаб. Кажется, что что-то не чисто.

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

Стало грустно. =(

Gap minder или Hans Rosling — мой кумир

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

Я уже не помню где я увидел это видео. Толи наткнулся на TED’е или ещё как-то. Идеи о которых говорил автор понравились мне и вдохновили. Они были просты, красивы и очень важны. Именно это видео дало мне желание находить интересные данные и представлять их в интересном и «правильном» виде.

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

Почему я вспомнил про это видео и Ганса Розлинга. Он выпустил новый фильм. В этот раз тема «нищета». Я ещё не успел посмотреть его и не знаю чего ожидать. Предлагаю вам посмотреть его самим и сделать свои выводы. Очень рекомендую творчество этого ученого и оратора.

UPD: Ганс ушел из жизни 7-ого февраля 2017 года. Он считал — всё в наших руках, статистика лишь инструмент анализа.

Ctrl + ↓ Ранее