2 заметки с тегом

разбор

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2017   пример   разбор   табло

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

В Лаборатория данных мы визуализируем данные: работаем над проектами, создаём методологию, проводим курс. Для вдохновения изучаем чужие визуализации, а лучшие публикуем в рубрике #Δλ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. Здесь формат работает классно и здорово выглядит. Есть поиск, динамическое разделение на индустрии, указаны средние значения. Единственное, что я не понял — цвет тоже дублирует положение по оси икс. Интересно мнение читателей, зачем это нужно?

2017   пример   разбор