Покемоны: загнать их всех... в график!

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

Я думаю, мой предыдущий пост в блоге раздразнил особо рьяных любителей игры в ловлю покемонов (судя по комментариям), которые почему-то решили, что единственные важные данные про Pokémon – это цены Nintendo. Ну это мило, конечно, что я так расшевелил одержимых ловлей покемонов друзей... но по попробую немножко всех успокоить. Сейчас я делаю диаграммы на основе данных о покемонах, которые могут быть интересными игрокам и просто пользователям.

Чтобы настроить вас на нужный лад, вот фото моей подруги Дженни со Spearow на плече:

jenni-spearrow

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

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

poketile

Их гистограмма, основанная на тех же данных, была попроще. И с ее помощью было проще сравнить, сколько покемонов каждого типа существует. Хоть и с некоторыми доводками, на мой взгляд, тут проще ориентироваться и интерпретировать результаты. Другая проблема была в том, что графики никак не были подписаны, так что, чтобы понять, о чем вообще речь, надо было прочитать статью.

poke-bar

А теперь мои графики!...

Первым шагом стал поиск данных. И поместить все это в SAS. К счастью, у Крис Хемедингер (Chris Hemedinger) в блоге недавно был пост о некоторых данных про покемонов, которые доступны в GitHub. Туда я и отправился и нашел все нужные мне данные в разных csv-файлах. Для чтения данных и загрузки их в SAS я использовал такой код:


%let baseurl=https://raw.githubusercontent.com/PokeAPI/pokeapi/master/data/v2/csv;
filename pk_csv url "&baseurl/pokemon.csv";
proc import file=pk_csv out=pokemon_names dbms=csv replace;
guessingrows=max;
run;

Как обычно бывает с данными в таблицах, цифровой id ассоциировался с именем каждого покемона, и дальше в таблицах просто используется этот идентификационный номер, а не само текствое имя. Что использовать текстовые имена в других таблицах, эксперты по базам данных обычно мёрждат таблицы с помощью команды SQL. Но SAS позволяет обойти всю эту сложную схему. Вы можете создать пользовательский формат (user defined-format, udf), благодаря которому id-номера будут отображаться в виде текста (и не надо сводить базы данных в одну). Вот код, который я использовал для этого:


proc sql noprint;
create table foo as
select unique id as start, propcase(identifier) as label
from pokemon_names;
quit; run;
data control; set foo;
fmtname = 'name_fmt';
type = 'N';
end = START;
run;
proc format lib=work cntlin=control;
run;

Но достаточно этих технических деталей. Давайте перейдем к графикам!

Вот моя плиточная диаграмма SAS. Я решил ее упростить немного и показать только первый уровень группировки. Для каждого основного типа свой блок. Размер блока показывает, сколько покемонов относятся к этому основному типу. Я думаю, это гораздо проще воспринимать и интерпретировать.

pokemon_gtile

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

pokemon

Дальше. Я попытался создать еще одну версию гистограммы – с усилениями, чтобы показать на маленьких участках, какой сегмент занимает каждый Pokémon. Если вы кликните по гистограмме ниже, то перейдете к интерактивной версии. При наведении мышкой вы сможете увидеть имя каждого покемона и после клика перейти в изображению.

pokemon1

Теперь спускаемся на более детальный уровень. Я подумал, будет интересно создать рассеянную диаграмму и посмотреть вес и высоту покемонов.

pokemon2

Поскольку лишь некоторые покемоны оказались очень высокими или очень длинными, большинство точек сосредоточены в левом нижнем углу. Эта диаграмма тоже интерактивная. Кликаете на точку – переходите к изображению из Google.

pokemon3

Я надеюсь, что вы узнали что-то новое о SAS и, конечно, о покемонах... и поняли, что если вы не можете их поймать, вы по крайней мере можете их загнать в график!

 

Автор:
Роберт Эллисон
(Robert Allison)

Back to Top