ПРИМЕЧАНИЕ
Многие API требуют регистрации и получения ключа API для совершения вызовов . На момент
написания для GitHub такого требования не было, но, если вы получите ключ API, предельная
частота обращений для ваших программ значительно увеличится .
Визуализация репозиториев с использованием Pygal
Теперь, с появлением интересных данных, мы построим визуализацию, демонстри-
рующую относительную популярность проектов Python в GitHub. Мы построим
интерактивную столбцовую диаграмму: высота каждого столбца будет представ-
лять количество звезд у проекта. Щелчок на столбце будет открывать домашнюю
страницу проекта на GitHub. Первая попытка выглядит так:
python_repos.py
import requests
import pygal
from pygal.style import LightColorizedStyle as LCS, LightenStyle as LS
# Создание вызова API и сохранение ответа.
URL = 'https://api.github.com/search/repositories?q=language:python&sort=star'
r = requests.get(URL)
print("Status code:", r.status_code)
# Сохранение ответа API в переменной.
response_dict = r.json()
print("Total repositories:", response_dict['total_count'])
# Анализ информации о репозиториях.
repo_dicts = response_dict['items']
names, stars = [], []
for repo_dict in repo_dicts:
names.append(repo_dict['name'])
stars.append(repo_dict['stargazers_count'])
# Построение визуализации.
my_style = LS('#333366', base_style=LCS)
chart = pygal.Bar(style=my_style, x_label_rotation=45, show_
legend=False)
chart.title = 'Most-Starred Python Projects on GitHub'
chart.x_labels = names
chart.add('', stars)
chart.render_to_file('python_repos.svg')
Сначала импортируется модуль
pygal
и стили Pygal, необходимые для оформления
диаграммы. Затем выводится статус ответа на вызов API и общее количество обна-
руженных репозиториев, чтобы мы сразу узнали о возможной проблеме с вызовом
API. Информация о конкретных возвращенных проектах уже не выводится, потому
что эта информация будет включена в визуализацию.
В точке создаются два пустых списка для хранения данных, включаемых в диа-
грамму. Нам понадобится имя каждого проекта (для пометки столбцов) и количе-
370 Глава 17 • Работа с API
ство звезд, определяющее высоту столбцов. В цикле имя каждого проекта и коли-
чество звезд присоединяются к соответствующему списку .
Затем программа определяет стиль с использованием класса
LightenStyle
(псев-
доним
LS
) на базе темного оттенка синего цвета . Также передается аргу-
мент
base_style
для использования класса
LightColorizedStyle
(псевдоним
LCS
). Метод
Bar()
создает простую столбцовую диаграмму, которой передается
стиль
my_style
. Также передаются еще два стилевых аргумента: метки пово-
рачиваются под 45 градусов к оси x (
x_label_rotation=45
), а условные обо-
значения скрываются, потому что на диаграмму наносится только одна серия
данных (
show_legend=False
). Затем назначается заголовок диаграммы, а атрибуту
x_labels
присваивается список
names
.
Так как метки для этой серии данных не нужны, при добавлении данных вместо
метки передается пустая строка. Полученная диаграмма изображена на рис. 17.1.
Мы видим, что несколько первых проектов существенно популярнее остальных,
но все эти проекты занимают важное место в экосистеме Python.
Достарыңызбен бөлісу: |