372
Глава 17 • Работа с API
При желании в
my_config
можно внести сколько угодно стилевых и конфигураци-
онных изменений; строка
от этого не изменится. На рис. 17.2 изображена диа-
грамма с измененным оформлением.
Добавление подсказок
В Pygal при наведении указателя мыши на отдельный столбец отображается инфор-
мация, которую этот столбец представляет. В текущей версии экранная
подсказка
(tooltip) отображает количество звезд проекта. Давайте создадим нестандартную
подсказку, которая также будет выводить описание каждого проекта.
Рассмотрим короткий пример, в котором каждый из первых трех проектов выво-
дится отдельно, с передачей нестандартных меток для каждого столбца. Для этого
методу
add()
следует передавать список словарей вместо списка значений:
bar_descriptions.py
import pygal
from pygal.style import LightColorizedStyle as LCS, LightenStyle as LS
my_style = LS('#333366', base_style=LCS)
chart = pygal.Bar(style=my_style, x_label_rotation=45, show_legend=False)
chart.title = 'Python Projects'
chart.x_labels = ['httpie', 'django', 'flask']
plot_dicts = [
{'value': 16101, 'label': 'Description of httpie.'},
{'value': 15028, 'label': 'Description of django.'},
{'value': 14798, 'label': 'Description of flask.'},
]
chart.add('', plot_dicts)
chart.render_to_file('bar_descriptions.svg')
Рис. 17.3.
С каждым столбцом связывается
нестандартная подсказка
Использование API веб-приложений
373
В точке
определяется список с именем
plot_dicts
, который содержит три
словаря: для проекта HTTPie, для проекта Django и для проекта Flask. Каждый
словарь содержит два ключа:
'value'
и
'label'
. Pygal использует число, связанное
с
'value'
, для определения высоты каждого столбца, а строка, связанная с
'label'
,
используется для создания подсказки столбца. Например, первый словарь
соз-
даст столбец, представляющий проект с 16 101 звездой, а в его подсказке будет
содержаться
текст
Description of httpie
.
Метод
add()
должен получать строку и список. При вызове
add()
передается
список словарей, представляющих столбцы (
plot_dicts
)
. Одна из подска-
зок изображена на рис. 17.3. Pygal включает количество звезд как подсказку
по умолчанию в дополнение к нестандартной подсказке, которую мы определили
в программе.
Нанесение
данных на диаграмму
Чтобы построить диаграмму с данными, мы сгенерируем
plot_dicts
автоматически
для 30 проектов, возвращенных вызовом API.
python_repos.py
...
# Анализ информации о репозиториях.
repo_dicts = response_dict['items']
print("Number of items:", len(repo_dicts))
names, plot_dicts = [], []
for repo_dict in repo_dicts:
names.append(repo_dict['name'])
plot_dict = {
'value': repo_dict['stargazers_count'],
'label': repo_dict['description'],
}
plot_dicts.append(plot_dict)
# Построение визуализации.
my_style = LS('#333366', base_style=LCS)
...
chart.add('', plot_dicts)
chart.render_to_file('python_repos.svg')
В точке
создаются два пустых списка,
names
и
plot_dicts
. Список
names
все еще
необходим
для построения меток оси
x
.
Внутри цикла для каждого проекта создается словарь
plot_dict
. В нем количе-
ство звезд сохраняется с ключом
'value'
, а описание проекта — с ключом
'label'
.
Затем словарь
plot_dict
каждого проекта присоединяется к
plot_dicts
. В точ-
ке
список
plot_dicts
передается
add()
. Полученная диаграмма изображена
на рис. 17.4.