Актеры без оскаров и bar chART потреты
Бар чарты и другие диаграммы можно использовать не только для отображения бизнес-метрик. При помощи диаграмм можно рисовать.
Любое цифровое изображение раскладывается в набор пикселей. Если для каждого пикселя вычислить его яркость и построить семейство бар-чартов, каждый из которых отображает уровень яркости, то получится изображение, но представленное бар-чартами. Эту идею я взял из блога
Elana Levin Schtulberg, Datawrapper. В статье используется Processing для сбора данных и Datawrapper для визуализаций. Идею я реализовал в Python и Tableau. Про весь процесс создания таких изображений написал статью: '
Bar Chart портреты в Tableau'.
Сама визуализация в Tableau:
'Известные актеры и актрисы без оскаров'
Там 10 портретов и 4 типа визуализации.
Процесс создания портрета состоит из шагов:
1. Получение изображений нужного разрешения. От разрешения будет зависеть шаг сетки, в которой будем строить бары.
2. Получение значений яркости для каждого пикселя. Если нужно цветное изображение, то нужно получить цвет каждого пикселя.
3. Создание датасета, в котором есть id каждого пикселя, его координаты, яркость и цвет
4. Подключение датасета к среде визуализации
5. Сама визуализация.
Все это можно делать в удобных для себя инструментах (js, R, python, processing и т.п.). У меня это Питон, библиотека обработки изображений Pillow для создания датасета, Tableau для визуализаций.
После того как будет готов датасет, можно строить визуализации. Для бар-чартов надо построить сетку X x Y, где X и Y делят пространство на ячейки, внутри которых рисуем бар-чарты. Потом можно экспериментировать с направлением баров (вертикальное или горизонтальное), шириной, цветом и т.д. В сочетании 'bar chART' есть слово 'ART', и это неслучайно
🙂.
За параметр длины бара берется величина 255 - [Brightness]. То есть, длина бара определяет степень затемнения ячейки. 255 - максимальное значение яркости.
Кроме баров можно использовать круги с переменным диаметром. Тогда получится диаграмма разброса (Scatter Plot). Можно использовать квадраты, ромбы, звезды и другие шейпы (флаги стран, лого компаний и т.п.). Отдельным типом диаграмм будет диаграмма Ганнта, для которой можно настраивать точку в ячейке, от которой будем заполнять ячейки.
Прикольное что делал таким способом:
1. Портрет из лого компании.
2. Портрет из портретов. То есть, в качестве шейпа используем сам портрет из которого формируем конечное изображение. Шейп только надо немного доработать.
В Tableau работает анимация - портреты плавно перетекают из одного изображения в другое. Меняются размеры баров, шейпов и других Marks одновременно. Это довольно интересно наблюдать. Есть проблема с классическими барами - они не анимируются. Связано это с тем, что за последние 2-3 года сильно урезали возможность анимации. Раньше все работало нормально, сейчас приходится немного потанцевать с бубном.
В визуализацию добавил возможность изменения яркости изображения. То есть, просто есть некоторый коэффициент, на который домножаются значения яркости всех пикселей, при этом, меняется яркость.
Сам конечный портрет представляет собой семейство бар-чартов, где каждый бар показывает степень яркости пикселя изображения.