Не зеленая "Матрица"
31 марта 25 лет назад в массовый прокат вышла первая часть трилогии "Матрица".
К этой дате решила использовать относительно недавно освоенный алгоритм анализа цвета видео в python и составила палитры трех фильмов (про алгоритм расскажу в отдельной серии постов).
Такие визуализации уже делали (например, тут и тут), но мне хотелось дополнительно выделить основные цвета и интересные акценты.
"Матрица" в первую очередь ассоциируется с зелеными оттенками, но цветокоррекция кадра во всех частях меняется в зависимости от локаций и основных сущностей.
P.S. За помощь по вопросам дизайна спасибо Антону💚
P.P.S. С коллегами в ТАСС к дате сделали постер с Нео и шуточное бинго😎
#датавиз #личное #python
31 марта 25 лет назад в массовый прокат вышла первая часть трилогии "Матрица".
К этой дате решила использовать относительно недавно освоенный алгоритм анализа цвета видео в python и составила палитры трех фильмов (про алгоритм расскажу в отдельной серии постов).
Такие визуализации уже делали (например, тут и тут), но мне хотелось дополнительно выделить основные цвета и интересные акценты.
"Матрица" в первую очередь ассоциируется с зелеными оттенками, но цветокоррекция кадра во всех частях меняется в зависимости от локаций и основных сущностей.
P.S. За помощь по вопросам дизайна спасибо Антону💚
P.P.S. С коллегами в ТАСС к дате сделали постер с Нео и шуточное бинго😎
#датавиз #личное #python
❤26👍7🔥4🥰2
Анализ видео: подготовка данных
Я использую python, но общая логика алгоритма может пригодиться и для других языков.
Сначала нужно покадрово считать видео. Сделаем это с помощью библиотеки OpenCV (cv2):
Теперь можно запустить цикл и собрать один кадр за каждую секунду. В цикле повторяется такой код:
Каждую итерацию считывается следующий кадр. В ret записывается информация о корректности считывания (True/False), frame — кадр в формате массива с rgb каждого пикселя.
Имея частоту видео, мы можем записать только один кадр в секунду. Такого объема данных достаточно для анализа. В итоге получаем список с числом кадров равным длительности видео в секундах. Что делать с ним дальше расскажу в следующем посте.
P.S. В комментариях полный код этой части.
#датавиз #python
Я использую python, но общая логика алгоритма может пригодиться и для других языков.
Сначала нужно покадрово считать видео. Сделаем это с помощью библиотеки OpenCV (cv2):
import cv2
# видео целиком
video = cv2.VideoCapture('file_name.mp4')
# частота кадров
fps = int(video.get(cv2.CAP_PROP_FPS))
# число кадров во всем видео
frame_count = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
Теперь можно запустить цикл и собрать один кадр за каждую секунду. В цикле повторяется такой код:
ret, frame = video.read()
Каждую итерацию считывается следующий кадр. В ret записывается информация о корректности считывания (True/False), frame — кадр в формате массива с rgb каждого пикселя.
Имея частоту видео, мы можем записать только один кадр в секунду. Такого объема данных достаточно для анализа. В итоге получаем список с числом кадров равным длительности видео в секундах. Что делать с ним дальше расскажу в следующем посте.
P.S. В комментариях полный код этой части.
#датавиз #python
🔥18❤8🤓5
Анализ видео: цвет
На прошлом этапе мы записали по одному кадру видео в секунду в список captures_array. Имея данные о кадрах в формате rgb, мы можем определить преобладающие оттенки.
Для этого используем метод кластеризации, а точнее kmeans. Он позволяет разбить массив на нужное число групп по близости значений и выделить их центры (центроиды). Эти значения являются доминирующими оттенками кадра. На мой взгляд, детальность данных будет достаточная, если выделить пять центроидов (k). Этот алгоритм нужно применить в цикле к каждому кадру (capture):
В итоге получаем палитру каждого кадра фильма в хронологическом порядке. Как ее визуализировать, расскажу в следующем посте.
P.S. Полный код оставила в комментариях.
#датавиз #python
На прошлом этапе мы записали по одному кадру видео в секунду в список captures_array. Имея данные о кадрах в формате rgb, мы можем определить преобладающие оттенки.
Для этого используем метод кластеризации, а точнее kmeans. Он позволяет разбить массив на нужное число групп по близости значений и выделить их центры (центроиды). Эти значения являются доминирующими оттенками кадра. На мой взгляд, детальность данных будет достаточная, если выделить пять центроидов (k). Этот алгоритм нужно применить в цикле к каждому кадру (capture):
# определяем размеры массива
shape = capture.shape
# пересобираем в одномерный массив
ar = capture.reshape(np.product(shape[:2]), shape[2]).astype(float)
# находим заданное число центроидов
centroids,_ = kmeans(ar, k)
В итоге получаем палитру каждого кадра фильма в хронологическом порядке. Как ее визуализировать, расскажу в следующем посте.
P.S. Полный код оставила в комментариях.
#датавиз #python
❤9👍6🔥4
Анализ видео: визуализация
Последний пост серии, первые два по ссылкам:
1. Подготовка данных
2. Анализ данных
Для виза снова используем cv2. Если данные записаны в таблицу xlsx, то понадобится модуль ast для корректного считывания синтаксиса списков.
При считывании объединяем данные в одномерный список (colors) и создаем пустой массив:
После этого заполняем массив цветами и с помощью cv2 создаем изображение:
Подробнее о параметрах файла палитры и том, как с ним работать, — в карточках.
P.S. И как обычно, полный код этой части в комментариях.
#датавиз #python
Последний пост серии, первые два по ссылкам:
1. Подготовка данных
2. Анализ данных
Для виза снова используем cv2. Если данные записаны в таблицу xlsx, то понадобится модуль ast для корректного считывания синтаксиса списков.
При считывании объединяем данные в одномерный список (colors) и создаем пустой массив:
# суммарное число цветов
colors_length = len(colors)
# высота изображения в пикселях
height = 500;
# создаем пустой массив
# height: число строк
# colors_length: число столбцов
# 3: массив цвета (r, g, b)
img_array = np.zeros((height, colors_length, 3), np.uint8)
После этого заполняем массив цветами и с помощью cv2 создаем изображение:
# заполняем массив
for x in range(colors_length):
img_array[:,x] = colors[x]
# записываем в файл
cv2.imwrite('file_name.png', img_array)
Подробнее о параметрах файла палитры и том, как с ним работать, — в карточках.
P.S. И как обычно, полный код этой части в комментариях.
#датавиз #python
🔥11❤3👍2
Написала статью для нашего редакционного канала про создание графика "Пересечение цветов "Окон ТАСС" по образам". Он показывает, какие оттенки преобладают в палитре ленинградских плакатов времен Великой Отечественной войны, изображающих врага, Красную армию, тыл и Родину.
В основе — диаграмма Венна, которая является одним из классических способов визуализации пересечения множеств (подробнее про него и другие визы множеств рассказывала тут)🤓
Для анализа цвета использовала python, а для автоматического создания элементов визуализации с сохранением пропорций плакатов — плагин Generator для графического редактора Figma. Самой сложной, как ни странно, оказалась не техническая часть, а расположение элементов по цветам😵💫
P.S. Другие визуализации, посвященные ленинградским "Окнам ТАСС", — в проекте.
#датавиз #рабочее #python
В основе — диаграмма Венна, которая является одним из классических способов визуализации пересечения множеств (подробнее про него и другие визы множеств рассказывала тут)🤓
Для анализа цвета использовала python, а для автоматического создания элементов визуализации с сохранением пропорций плакатов — плагин Generator для графического редактора Figma. Самой сложной, как ни странно, оказалась не техническая часть, а расположение элементов по цветам😵💫
P.S. Другие визуализации, посвященные ленинградским "Окнам ТАСС", — в проекте.
#датавиз #рабочее #python
❤25👍6🔥2
6 июня отмечают День русского языка. Это отличный повод вспомнить о творчестве русских поэтов и писателей🤓
Делюсь подборкой материалов, для которых провела работу по анализу текстов, нашла дополнительную фактуру и собрала результаты в единую историю:
1) Песни Виктора Цоя: моя первая подобная инфографика, которую делала еще стажером, недавно освоившим python. Было одновременно страшно и интересно😄
2) Песни Владимира Высоцкого: попыталась уместить все-все интересные факты. Получилось плотно и насыщенно (возможно, слишком)🤔
3) Визуальное и текстовое творчество Вознесенского: благодаря помощи Центра Вознесенкого удалось охватить и сравнить сразу два вида творчества❤️
4) Поэзия Владимира Маяковского: придумалась цветовая кодировка уникальных для периода слов в облаках (уверена, такое уже делали, но раньше не сообразила)☁️
5) Дневики Льва Толстого: пугал объем текстов (целая жизнь!), но все получилось💪
6) Басни Ивана Крылова: пришлось собирать данные вручную (спасибо Крылову, что практически все басни очень короткие). Открыла для себя новый тип визуализации пересечений множеств — UpSet Plot💡
Каждый проект — маленькое личное открытие. Надеюсь, эта коллекция будет и дальше пополняться🤞
#датавиз #инфографика #рабочее #python
Делюсь подборкой материалов, для которых провела работу по анализу текстов, нашла дополнительную фактуру и собрала результаты в единую историю:
1) Песни Виктора Цоя: моя первая подобная инфографика, которую делала еще стажером, недавно освоившим python. Было одновременно страшно и интересно😄
2) Песни Владимира Высоцкого: попыталась уместить все-все интересные факты. Получилось плотно и насыщенно (возможно, слишком)🤔
3) Визуальное и текстовое творчество Вознесенского: благодаря помощи Центра Вознесенкого удалось охватить и сравнить сразу два вида творчества❤️
4) Поэзия Владимира Маяковского: придумалась цветовая кодировка уникальных для периода слов в облаках (уверена, такое уже делали, но раньше не сообразила)☁️
5) Дневики Льва Толстого: пугал объем текстов (целая жизнь!), но все получилось💪
6) Басни Ивана Крылова: пришлось собирать данные вручную (спасибо Крылову, что практически все басни очень короткие). Открыла для себя новый тип визуализации пересечений множеств — UpSet Plot💡
Каждый проект — маленькое личное открытие. Надеюсь, эта коллекция будет и дальше пополняться🤞
#датавиз #инфографика #рабочее #python
🔥31❤12👍5
Визуализация палитры изображений🎨
Сегодня мы выпустили проект про революционные "Окна сатиры РОСТА". 105 лет назад, осенью 1919 года в Москве вышел первый плакат.
Для этого проекта я проанализировала данные об "Окнах", созданных московской редакцией, из собрания Госархива РФ. Поэт В.В. Маяковский написал тексты более половины сохранившихся "Окон" и нарисовал более трети сюжетов.
Вкладу Маяковского в создание плакатов посвящено несколько визуализаций: с анализом текстов его авторства и цветовой палитрой плакатов, нарисованных им же.
Палитра, на мой взгляд, — самая интересная инфографика проекта. Похожий график я уже делала раньше про ленинградские "Окна ТАСС" (писала о нем и его создании в посте и статье).
В этот раз удалось переосмыслить концепцию прошлого графика и более детально показать историю с образами — цвета в больших группах "коммунизм" и "империализм" повторяются, но связаны с разными персонажами и идеями. В визуализации "Окон ТАСС" такого подхода нет, но зато отражены реальные соотношения сторон плакатов. Для новой палитры подобных данных не было (что, кстати, позволило выстроить более аккуратную композицию).
P.S. Процесс создания графика покажу в отдельном посте👀
#датавиз #рабочее #python
Сегодня мы выпустили проект про революционные "Окна сатиры РОСТА". 105 лет назад, осенью 1919 года в Москве вышел первый плакат.
Для этого проекта я проанализировала данные об "Окнах", созданных московской редакцией, из собрания Госархива РФ. Поэт В.В. Маяковский написал тексты более половины сохранившихся "Окон" и нарисовал более трети сюжетов.
Вкладу Маяковского в создание плакатов посвящено несколько визуализаций: с анализом текстов его авторства и цветовой палитрой плакатов, нарисованных им же.
Палитра, на мой взгляд, — самая интересная инфографика проекта. Похожий график я уже делала раньше про ленинградские "Окна ТАСС" (писала о нем и его создании в посте и статье).
В этот раз удалось переосмыслить концепцию прошлого графика и более детально показать историю с образами — цвета в больших группах "коммунизм" и "империализм" повторяются, но связаны с разными персонажами и идеями. В визуализации "Окон ТАСС" такого подхода нет, но зато отражены реальные соотношения сторон плакатов. Для новой палитры подобных данных не было (что, кстати, позволило выстроить более аккуратную композицию).
P.S. Процесс создания графика покажу в отдельном посте👀
#датавиз #рабочее #python
❤16🔥8👍4
Дата-открытки: итоги работы и анализ тг-чата
Продолжаю парад дата-подарков и рассказываю про открытки, которые сделала для коллеги Маши.
На первой карточке — визуализация материалов по темам и форматам, над которыми Маша работала в ТАСС. Код для генерации графика написал Антон в observable еще для прошлых подарочных дата-плакатов👨💻
На второй открытке — облако слов из всех сообщений, которые Маша писала в наш полурабочий чат. Данные из сообщений я собрала с помощью python — запарсила архив чата (html). Если вам будет интересна серия постов с подробным описанием процесса и кодом, то ставьте 👾
Из всего набора слов я отобрала только существительные, прилагательные и междометия, позабавил контраст связанных с работой слов и нервного смеха. Глаголы и наречия в топ не забрала, т.к. они не отражали специфику диалога. Цветом отмечены топ-10 слов по частям речи.
Еще есть третья секретная открытка тоже с облаком слов. Для нее я отобрала только ругательства из сообщений и также выделила цветом топ слов по корням. Чтобы никого не компрометировать, оставлю содержание карточки в секрете🤫
P.S. За организацию печати открыток спасибо рукодельнице Насте!❤️
#датаарт #датавиз #личное #python
Продолжаю парад дата-подарков и рассказываю про открытки, которые сделала для коллеги Маши.
На первой карточке — визуализация материалов по темам и форматам, над которыми Маша работала в ТАСС. Код для генерации графика написал Антон в observable еще для прошлых подарочных дата-плакатов👨💻
На второй открытке — облако слов из всех сообщений, которые Маша писала в наш полурабочий чат. Данные из сообщений я собрала с помощью python — запарсила архив чата (html). Если вам будет интересна серия постов с подробным описанием процесса и кодом, то ставьте 👾
Из всего набора слов я отобрала только существительные, прилагательные и междометия, позабавил контраст связанных с работой слов и нервного смеха. Глаголы и наречия в топ не забрала, т.к. они не отражали специфику диалога. Цветом отмечены топ-10 слов по частям речи.
Еще есть третья секретная открытка тоже с облаком слов. Для нее я отобрала только ругательства из сообщений и также выделила цветом топ слов по корням. Чтобы никого не компрометировать, оставлю содержание карточки в секрете🤫
P.S. За организацию печати открыток спасибо рукодельнице Насте!❤️
#датаарт #датавиз #личное #python
👾21🔥15❤10😁3👍1
Новогодняя статистика🎄
До Нового года остается меньше недели! Пока праздничная суета не захватила всех полностью, делюсь результатами анализа данных о поздравительных текстах и открытках. Всего получилось собрать 10,8 тыс. новогодних постов из 39 тематических групп «ВКонтакте» за 2009–2023 годы✨
Основой проекта стали данные, которые я собирала в 2022 году для исследования ТАСС. Для новых карточек обновила статистику, местами переписала и оптимизировала код и доработала анализ цветов. Также сделала обобщающие карточки с типичными и нетипичными пожеланиями🤓
Какое поздравление вам нравится больше?
🎅 — типичное
🤪 — нетипичное
P.S. В процессе с ностальгией вспоминала рабочий проект. Благодарна Сабине Вахитовой, которая тогда руководила инфографикой ТАСС. Она поверила в мои силы и поддержала все идеи. Благодаря ее доверию я впервые притронулась к анализу изображений и цветов в python❤️
#датавиз #личное #python
До Нового года остается меньше недели! Пока праздничная суета не захватила всех полностью, делюсь результатами анализа данных о поздравительных текстах и открытках. Всего получилось собрать 10,8 тыс. новогодних постов из 39 тематических групп «ВКонтакте» за 2009–2023 годы✨
Основой проекта стали данные, которые я собирала в 2022 году для исследования ТАСС. Для новых карточек обновила статистику, местами переписала и оптимизировала код и доработала анализ цветов. Также сделала обобщающие карточки с типичными и нетипичными пожеланиями🤓
Какое поздравление вам нравится больше?
🎅 — типичное
🤪 — нетипичное
P.S. В процессе с ностальгией вспоминала рабочий проект. Благодарна Сабине Вахитовой, которая тогда руководила инфографикой ТАСС. Она поверила в мои силы и поддержала все идеи. Благодаря ее доверию я впервые притронулась к анализу изображений и цветов в python❤️
#датавиз #личное #python
❤24🤪16🎅5👍2🔥1
Закинула на github файл с кодом (python) для анализа цвета видео👾
https://github.com/alsosha/video_color_analysis/blob/main/video_analysis.ipynb
В прошлом году постила алгоритм и его описание тремя отдельными частями:
1. Подготовка данных
2. Анализ данных
3. Визуализация данных
Пример применения кода — мой небольшой проект про цвета трилогии "Матрица".
#python
https://github.com/alsosha/video_color_analysis/blob/main/video_analysis.ipynb
В прошлом году постила алгоритм и его описание тремя отдельными частями:
1. Подготовка данных
2. Анализ данных
3. Визуализация данных
Пример применения кода — мой небольшой проект про цвета трилогии "Матрица".
#python
🔥22❤8👍6
Парсинг тг-чата
Показывала тут дата-открытки с облаками слов из всех сообщений коллеги и обещала рассказать о процессе парсинга тг-чата и анализе текста с помощью python. Рассказываю и делюсь кодом👾
Файл ipynb выложила на github. Внутри не только код, но и комментарии с объяснением алгоритма:
https://github.com/alsosha/tg_chat_parser/blob/main/tg_chat_parser.ipynb
Для наглядности также сделала карточки — изучайте и задавайте вопросы в комментариях, если будут💞
Впереди еще два поста: про анализ текста и генерацию облака слов в svgбесплатно и без регистрации😄
P.S. Еще недавно выложила код для анализа видео и рассказала про алгоритм в карточках.
#python
Показывала тут дата-открытки с облаками слов из всех сообщений коллеги и обещала рассказать о процессе парсинга тг-чата и анализе текста с помощью python. Рассказываю и делюсь кодом👾
Файл ipynb выложила на github. Внутри не только код, но и комментарии с объяснением алгоритма:
https://github.com/alsosha/tg_chat_parser/blob/main/tg_chat_parser.ipynb
Для наглядности также сделала карточки — изучайте и задавайте вопросы в комментариях, если будут
Впереди еще два поста: про анализ текста и генерацию облака слов в svg
P.S. Еще недавно выложила код для анализа видео и рассказала про алгоритм в карточках.
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤25🔥17👍9👾1