Книга «Изучаем Python»



Pdf көрінісі
бет201/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   197   198   199   200   201   202   203   204   ...   238
ПРИМЕЧАНИЕ

Многие  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.



Достарыңызбен бөлісу:
1   ...   197   198   199   200   201   202   203   204   ...   238




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет