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

pac-man. bandai namco. entertainment inc. 1980
Я использовала датасет с сайта Kaggle, содержащий информацию о продажах видеоигр до начала 2015 года
В проекте используются столбчатые диаграммы, круговые диаграммы, линейные графики, а также наложение данных на карту с помощью geopandas. С помощью библиотек matplotlib и seaborn постаралась по возможности стилизовать графики под ретро-тематику: чёрный фон, основные цвета и градиенты неоновые, а также используются пиксельные шрифты (скачанные и вручную импортированные в код), а также отсылки к видеоиграм (круговая диаграмма представлена в виде Pac-Man). Где приходилось визуализировать множество разных данных, я использовала другие неоновые цвета.

После загрузки датасета мы изучили его формат и типы данных

Произвели подсчет пропусков и убраны основные пропуски из датасета, где их было больше всего
Добавляем библиотеки, которые будем использовать далее:
matplotlib.pyplot: основной модуль для построения графиков. matplotlib.font_manager: позволяет использовать сторонние (кастомные) шрифты. numpy: для числовых операций. Normalize, ScalarMappable, get_cmap: используются для создания цветового градиента и цветовой легенды.
Сортируем датафрейм df по колонке Global_Sales (продажи по миру) по убыванию. Потом берём первые 10 строк — это топ-10 самых продаваемых видеоигр. После этого загружаем кастомный пиксельный шрифт из файла и создаём цветовую карту:
get_cmap («plasma»): создаёт градиент от фиолетового к жёлтому (неоновый стиль). Normalize (…): нормализует значения продаж в диапазоне от минимального до максимального. colors (norm (…)): применяет градиент к значениям продаж — чем выше продажи, тем ярче цвет.
После этого мы создаём наш график, сначала устанавливаем темный фон и его размеры, после — строим сам столбчатый график, где указываем толщину обводки, порядок и ориентацию столбцов и тд. После этого устанавливаем заголовки и подписи графика в пиксельном шрифте, а также количество продаж справа от столбца. В конце создаем цветовую легенду с градиентом
Сначала группируем данные по жанру с помощью groupby («Genre») и суммируем глобальные продажи (Global_Sales) для каждого жанра. Затем сортируем их по возрастанию — это нужно, чтобы на графике жанры с меньшими продажами были внизу.
Устанавливаем тёмный фон и задаём размеры графика. Создаём горизонтальный столбчатый график, где каждый жанр — это строка, а длина столбца — общий объём продаж. Задаём цвет для каждого бара (bar_colors), добавляем неоновую голубую обводку и применяем стиль ретро-пиксельного шрифта к заголовку и подписям осей.
Цвета подписей осей выдержаны в неоновой палитре: фиолетовый заголовок, салатовая шкала. У названий жанров (ось Y) также используется пиксельный шрифт. Направо от каждого столбца выводим численное значение продаж (в миллионах), оформленное в том же стиле.
В конце добавляем вертикальную цветовую легенду (colorbar), которая показывает градиент в соответствии с объёмами продаж. Легенда оформлена в пиксельном стиле с белыми подписями. Всё аккуратно упаковывается с помощью tight_layout (), чтобы не было наложений.
Сначала группируем данные по году выпуска игр (Year) и суммируем глобальные продажи (Global_Sales) — получаем общие продажи видеоигр по годам. Эти данные понадобятся для построения линии тренда.
Далее задаём тёмный фон и размеры графика. Строим линейный график с тремя слоями одной и той же линии, чтобы получить эффект неонового свечения:
— первый слой с широкой полупрозрачной линией (linewidth=4, alpha=0.2), — второй чуть уже и ярче (linewidth=2.5, alpha=0.5), — третий — тонкая линия с яркими маркерами (marker='o') цвета фуксии, создающая эффект пиксельных точек.
Поверх графика добавляются горизонтальные линии-сетки в тёмно-сером цвете для визуального ритма, имитируя глитч или экран ЭЛТ-монитора (axhline).
Затем оформляется график в неоновой пиксельной эстетике: — заголовок и подписи осей выполнены пиксельным шрифтом, — цвета надписей — фиолетовый (заголовок) и салатовый (оси), — на оси X выводятся года с шагом 5 лет, все тики также оформлены в стиле ретро.
Сетка на фоне отключена, а tight_layout () используется для аккуратного размещения всех элементов без наложений. Получается стильный неоновый график, показывающий динамику продаж видеоигр по годам.
Сначала подключаем библиотеки: geopandas — для работы с географическими картами и границами стран, ScalarMappable — импортируется, но в данном коде не используется (можно удалить).
Загружаем геоданные мира с сайта Natural Earth: это полигоны стран с названиями и геометрией. Создаём серию region_totals, где для каждого региона (NA, EU, JP, Other) считается сумма всех продаж видеоигр по соответствующей колонке в датафрейме df.
Затем считаем доли (в процентах) каждого региона от общего объёма продаж — это region_shares.
Создаём функцию assign_region, которая по названию страны присваивает регион:
—США, Канада, Мексика → «NA» —Япония → «JP» —страны Европы → «EU» —всё остальное → «Other»
Применяем эту функцию к каждой строке геодатафрейма world, чтобы добавить новую колонку «Region».
Создаём словарь base_colors, где каждому региону сопоставлен определённый яркий неоновый цвет.
По этому словарю создаём новую колонку «Color» — это цвет каждой страны на карте в зависимости от региона.
Далее настраиваем тёмную тему оформления графика. Рисуем границы стран (world.boundary.plot) и сами страны с нужным цветом (world.plot). Цвета берутся из world [«Color»], обводка — тёмно-серая.
Устанавливаем заголовок карты в пиксельном шрифте и отключаем оси (ax.axis («off»)), чтобы убрать лишнее.
В конце добавляем текстовую легенду на саму карту: указываем доли продаж для каждого региона в процентах. Цвет текста соответствует цвету региона.
Карта показывает, какой вклад в глобальные продажи видеоигр вносит каждый регион мира.
Добавляем библиотеки, которые будем использовать далее: matplotlib.pyplot — основной модуль для построения графиков, matplotlib.patches — нужен для создания дополнительных элементов (например, глаза Пакмана).
Сначала группируем датафрейм df по колонке Platform и суммируем значения продаж по всему миру (Global_Sales). Сортируем полученные значения по убыванию и берём только 6 самых продаваемых платформ.
Создаём списки labels и values— это названия платформ и соответствующие суммы продаж. Добавляем фиктивную категорию «Pac-Mouth» — она будет использоваться как «рот» Пакмана. Её значение задаётся как 15% от суммы остальных продаж, чтобы в круговой диаграмме появился визуальный разрыв.
Задаём цвета для всех секторов: для каждой платформы — неоновый цвет, а для «рта» — почти чёрный (#111111). Устанавливаем тёмную тему оформления графика.
Создаём фигуру и ось, строим круговую диаграмму (ax.pie). Устанавливаем:
Устанавливаем заголовок графика «PLATFORM SALES AS PAC-MAN» в пиксельном шрифте и ярко-жёлтом цвете. Отключаем оси и задаём пропорции, чтобы диаграмма выглядела ровным кругом.
В результате получаем стилизованную круговую диаграмму, которая напоминает Пакмана, где каждый сектор отображает долю глобальных продаж по игровой платформе.
Выводы: Годы выпуска и продажи: Чем новее игра, тем больше у неё продаж (резкий спад в 2010 году может быть связан с особенностями датасета).
Жанры и топовые игры: Самый популярный жанр — экшн, но самая продаваемая игра с большим отрывом — Wii Sports (спортивный симулятор).
Региональные продажи: Практически половина всех игр продаётся в Северной Америке. В Японии — всего 14,5%, но с учётом размера страны, видеоигры там, вероятно, значительно популярнее.
Популярные платформы: PlayStation — самая популярная (~50% продаж). Далее идёт Nintendo (Wii — Wii Sports, Nintendo DS — Pokémon).
Происхождение брендов: И Nintendo, и PlayStation — японские компании. В 2000-х большинство топовых игр были из Японии.
Анализ данных позволяет заключить, что самые продаваемые видеоигры рассматриваемого периода обладали двумя определяющими характеристиками: японским происхождением и принадлежностью к жанрам спортивных симуляторов или экшн. Подавляющее большинство топовых игр было разработано японскими студиями и выпущено на платформах местных брендов — Nintendo и PlayStation. При этом, несмотря на доминирование жанра экшн в общем количестве выпускаемых игр, абсолютным лидером по продажам стал спортивный симулятор Wii Sports. Такое распределение демонстрирует, что в данный период японские разработчики не только занимали лидирующие позиции на мировом рынке видеоигр, но и задавали основные тренды игровой индустрии, предлагая продукцию в наиболее востребованных игроками жанрах. Особенно показателен контраст между коммерческим успехом спортивного симулятора Wii Sports и общей популярностью экшн-игр, что свидетельствует о разнообразии игровых предпочтений аудитории в анализируемый период.
Описание применения генеративной модели
Сhat gpt 4— для помощи с более сложными визуализациями: картой и круговой диаграммой в виде Pac man. С помощью него мне удалось понять, с помощью каких библиотек и методов реализовать более сложные, нестандартные визуализации
Reve image 1.0 — генерация изображения для обложки