python_repos_visual.py
import requests
❶
from plotly.graph_objs import Bar
from plotly import offline
❷
# Создание вызова API и сохранение ответа.
url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'
headers = {'Accept': 'application/vnd.github.v3+json'}
r = requests.get(url, headers=headers)
print(f"Status code: {r.status_code}")
# Обработка результатов.
response_dict = r.json()
repo_dicts = response_dict['items']
❸
repo_names, stars = [], []
for repo_dict in repo_dicts:
382
Глава 17 • Работа с API
repo_names.append(repo_dict['name'])
stars.append(repo_dict['stargazers_count'])
# Построение визуализации.
❹
data = [{
'type': 'bar',
'x': repo_names,
'y': stars,
}]
❺
my_layout = {
'title': 'Most-Starred Python Projects on GitHub',
'xaxis': {'title': 'Repository'},
'yaxis': {'title': 'Stars'},
}
fig = {'data': data, 'layout': my_layout}
offline.plot(fig, filename='python_repos.html')
Мы импортируем класс
Bar
и модуль
offline
из
plotly
. Импортировать класс
Layout
не нужно, потому что для определения макета будет использоваться сло-
варь, как это делалось со списком
data
в проекте с землетрясениями из главы 16.
Затем выводится статус ответа на вызов API, чтобы мы сразу узнали о возможной
проблеме с вызовом API
. Часть кода обработки ответа API удалена, потому что
фаза исследования данных осталась позади; мы знаем, что получены именно те
данные, которые нам нужны.
В точке
создаются два пустых списка для хранения данных, включаемых в диа-
грамму. Нам понадобится имя каждого проекта (для пометки столбцов) и количе-
ство звезд, определяющее высоту столбцов. В цикле имя каждого проекта и коли-
чество звезд присоединяются к соответствующему списку.
Затем определяется список
data
. Он содержит словарь вроде того, который
использовался в главе 16: он определяет тип диаграммы и содержит значения по
осям
x
и
y
. По оси
x
размещаются названия проектов, а по оси
y
— количество звезд,
назначенное каждому проекту.
В точке
макет диаграммы определяется при помощи словаря. Вместо того чтобы
создавать экземпляр класса
Layout
, мы строим словарь с нужными спецификаци-
ями макета. Далее назначается заголовок для диаграммы в целом, а также метки
каждой оси.
Полученная диаграмма изображена на рис. 17.1. Мы видим, что несколько первых
проектов существенно популярнее остальных, но все эти проекты занимают важное
место в экосистеме Python.
Доработка диаграмм Plotly
Немного доработаем стилевое оформление диаграммы. Как было показано
в главе 16, все директивы стилевого оформления включаются в виде пар «ключ-
значение» в словари
data
и
my_layout
.
Использование API веб-приложений
Достарыңызбен бөлісу: |