Перехватываю эстафетную палочку у Артёма.
Схема действительно выглядит запутанной, при этом данных на ней не так уж много. Если показать их в виде таблички, получится намного компактнее:
А если исходные данные дополнить процентными долями внутрилиговых переходов, мы сразу увидим все те выводы, которые озвучивает автор инфографики:
Кто‑то скажет, что инфографика выглядит эффектнее таблицы. Но для меня визуализация данных, которые и без этого можно окинуть взглядом, не имеет смысла. Уважаемый советчик предлагает «упростить» диаграмму, чтобы она стала менее запутанной, как будто сложность и запутанность идут рука об руку. На самом деле, сложность ≠ запутанность, можно запутать относительно простые данные (яркий пример тому — исходная диаграмма), а можно сложные данные показать понятно и наглядно.
Предлагаю в качестве эксперимента обогатить данные о футбольных трансферах и проверить, получится ли у нас создать для этих более сложных данных менее запутанную и более интересную для изучения визуализацию. В этом совете я проведу вас по шагам алгоритма визуализации сложных данных и дам задание для самостоятельных экспериментов. А в следующий раз покажу, к какому результату пришла я сама.
Реальность данных
Итак, первый шаг алгоритма Δλ — описать реальность данных, то есть полную картину процессов, которые порождают исходные данные. Для нашей задачи реальность данных будет звучать примерно так.
«В профессиональном футболе игроки разной национальности, пола и возраста заключают контракты на разную зарплату с командам разных дивизионов (tiers), играющих в разных лигах разных стран мира. На данный момент по главному футбольному рейтингу топовыми лигами считаются: английская Премьер‑лига, немецкая Бундеслига, испанская Ла Лига, итальянская Серия А и французская Лига 1.
Дважды в год, в межсезонье, когда нет игр, игрок может перейти из одной команды в другую до истечения срока контракта — такой переход называется трансфером (transfer), а период, когда случаются трансферы — трансферным окном. Трансферы позволяют командам переманивать перспективных игроков и избавляться от тех, кто не оправдал ожиданий. При трансфере игрок договаривается с новой командой об условиях, а команды договариваются между собой о компенсации (transfer fee), которую выплачивает приобретающая игрока команда за расторжение ранее заключённого им контракта. Иногда отступные прописаны в исходном контракте, это называется клаусула, тогда новой команде достаточно выплатить их и на этом переговоры заканчиваются. Иногда трансфер происходит без компенсации, по взаимному согласию сторон. Иногда сторонам не удаётся договориться, тогда игрок остаётся в исходной команде.
Помимо постоянных трансферов, существует также аренда игроков (loan transfer), такие трансферы отличаются тем, что по окончании оговоренного срока игрок возвращается в исходную команду. Они используются для «прокачки» молодых игроков, которым не хватает игрового времени во время сезонных игр в сильной команде, для усиления команды, временно потерявшей ключевых игроков из‑за травм, для знакомства в деле с игроком, которому команда хочет предложить постоянное место или чтобы на время пристроить игрока, который по разным причинам не прижился.»
Обратите внимание, как скупо и блёкло после такого описания выглядит анализ переходов исключительно между командами топовых лиг, сколько живого, вкусного, интересного содержания осталось за кадром исходной диаграммы. Я собрала в одной таблице данные о переходах, которые касаются топовых лиг (в топовую лигу, из топовой лиги, или между топовыми лигами), и у меня получилась таблица на 16 столбцов и 2,5 тыс. строк — и это только трансферы сезона 2023/2024. Вот это уже подходящий материал для осмысленной визуализации!
Частица данных и структурная схема
На втором шаге мы выделяем частицу данных, единицу смысла нашей задачи. Здесь всё просто: частицей данных будет трансфер — переход конкретного игрока конкретной национальности, пола и возраста, с конкретной стоимостью на футбольном рынке, между конкретными командами одной или разных стран, принадлежащими к своим дивизионам, случившийся в конкретное трансферное окно, с конкретными условиями, включая компенсацию.
Зафиксируем структуру данных на схеме, где покажем все основные сущности, их свойства и связи между ними.
Эта схема показывает, что частица данных — общий знаменатель для всех сущностей, все остальные сущности дотягиваются до неё своими усиками, напрямую или через другие сущности. Схема также содержит все параметры, которыми мы будет оперировать на следующих шагах.
Конструирование визуализации
Третий и четвёртый шаги алгоритма Δλ — это конструирование визуализации. Мой подход, о котором я подробно расскажу в будущих советах, отличается от привычного пути использования библиотеки шаблонов. Я не пытаюсь выбрать формат и «запихнуть» в него данные — это верный путь оставить слишком многое за кадром. Я создаю формат визуализации под каждый набор данных, отталкиваясь от частицы данных и её важных свойств.
Визуализация отвечает на вопросы, но только на те, которые можно сформулировать, опираясь на известные параметры данных. Как часто случаются трансферы между командами топовых лиг — один из таких вопросов, ответ на которой мы видели на исходной диаграмме. А какие вопросы можно задать, чтобы более полно отразить реальность данных? Например, из каких лиг и дивизионов игроки попадают в команды топовых лиг, и куда из топовых лиг уходят? Как возраст и стоимость игрока влияют на попадание в топовую лигу и уход из неё? По каким параметра арендные трансферы отличаются от обычных? Как стоимость трансферной компенсации зависит от стоимости и возраста игрока? А как все эти закономерности меняются в зависимости от страны? Связи между командами каких стран наиболее сильны? И так далее.
Задавая эти вопросы, мы понимаем, какие параметры данных нам важны и какие интересно анализировать в совокупности. Именно они зададут каркас визуализации: мы привяжем по одному параметру к горизонтальному и вертикальному измерению экрана и выложим в это пространство все частицы данных — трансферы.
На исходной диаграмме трансферы показаны линиями из одной топ‑лиги в другую. Если каркас составить из значимых количественных параметров — компенсации и стоимости игрока — частицы станут точками:
На этом наброске проявились закономерности: линейная зависимость трансферной компенсации от стоимости игрока для игроков дороже 1 млн евро, более «молодой» цвет графика над диагональю. На графике так же видны аномалии, выбивающиеся из закономерностей. Но нет информации о лигах и дивизионах, которая для нас важна. За счёт чего её можно было бы добавить?
Трансферы могут стать кружочками, символами, отрезками — в зависимости от того, как устроен каркас и какие свойства частицы данных мы хотим проявить в дополнение к тем, что раскрыли на горизонтали и вертикали. Цвет можно использовать для кодирования одного или нескольких измерений. Можно комбинировать каркасы и добавлять фильтры, чтобы дать возможность зрителю «пощупать» данные и различные закономерности. Но нельзя забывать о том, что общая картина должна быть достаточно полной и интересной сама по себе.
Приглашаю уважаемых советчиков предложить идеи разных визуализаций на основе обогащённого датасета. Если вы дружите с Табло, Даталенсом, d3.js или другими инструментами, покажите в комментариях результаты в виде готовых диаграмм со ссылками на их интерактивные версии. Если хотите просто поразмыслить на задачей, нарисуйте идею в любимом графическом редакторе или даже на листочке. Посмотрим, сколько разнообразных идей вы придумаете. А в следующем совете я покажу свой вариант решения :‑)