Читаем Изучаем Python полностью

(3)chart.add('', plot_dicts)

chart.render_to_file('bar_descriptions.svg')

Рис. 17.3. С каждым столбцом связывается нестандартная подсказка

В точке (1) определяется список с именем plot_dicts, который содержит три словаря: для проекта HTTPie, для проекта Django и для проекта Flask. Каждый словарь содержит два ключа: 'value' и 'label'. Pygal использует число, связанное с 'value', для определения высоты каждого столбца, а строка, связанная с 'label', используется для создания подсказки столбца. Например, первый словарь (2) создаст столбец, представляющий проект с 16 101 звездой, а в его подсказке будет содержаться текст Description of httpie.

Метод add() должен получать строку и список. При вызове add() передается список словарей, представляющих столбцы (plot_dicts) (3). Одна из подсказок изображена на рис. 17.3. Pygal включает количество звезд как подсказку по ­умолчанию в дополнение к нестандартной подсказке, которую мы определили в программе.

<p>Нанесение данных на диаграмму</p>

Чтобы построить диаграмму с данными, мы сгенерируем plot_dicts автоматически для 30 проектов, возвращенных вызовом API.

python_repos.py

...

# Анализ информации о репозиториях.

repo_dicts = response_dict['items']

print("Number of items:", len(repo_dicts))

(1) names, plot_dicts = [], []

for repo_dict in repo_dicts:

names.append(repo_dict['name'])

. .

(2) . .plot_dict = {

. . . .'value': repo_dict['stargazers_count'],

. . . .'label': repo_dict['description'],

. . . .}

(3) . .plot_dicts.append(plot_dict)

# Построение визуализации.

my_style = LS('#333366', base_style=LCS)

...

(4)chart.add('', plot_dicts)

chart.render_to_file('python_repos.svg')

В точке (1) создаются два пустых списка, names и plot_dicts. Список names все еще необходим для построения меток оси x.

Внутри цикла для каждого проекта создается словарь plot_dict (2). В нем количество звезд сохраняется с ключом 'value', а описание проекта — с ключом 'label'. Затем словарь plot_dict каждого проекта присоединяется к plot_dicts (3). В точке (4) список plot_dicts передается add(). Полученная диаграмма изображена на рис. 17.4.

Рис. 17.4. При наведении указателя мыши на столбец появляется описание проекта

<p>Добавление активных ссылок на диаграмму</p>

Pygal также позволяет использовать каждый столбец диаграммы как ссылку на сайт. Чтобы реализовать эту возможность, достаточно добавить всего одну строку кода, в которой используется словарь, создаваемый для каждого проекта. В словарь plot_dict каждого проекта добавляется новая пара «ключ—значение» с ключом 'xlink':

python_repos.py

...

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'],

. . . .'xlink': repo_dict['html_url'],

}

plot_dicts.append(plot_dict)

...

Pygal использует URL-адрес, связанный с 'xlink', для преобразования каждого столбца в активную ссылку. Если щелкнуть на любом столбце диаграммы, в браузере автоматически открывается новая вкладка со страницей GitHub соответствующего проекта. Итак, мы создали интерактивную, содержательную визуализацию данных, загруженных через API!

<p>API Hacker News</p>

Чтобы познакомиться с использованием вызовов API для других сайтов, мы обратимся к сайту Hacker News (http://news.ycombinator.com/). На этом сайте пользователи делятся друг с другом статьями, посвященными программированию и технологиям, а также активно обсуждают эти статьи. API сайта Hacker News предоставляет доступ ко всем статьям и комментариям на сайте, а для его использования не требуется регистрация с получением ключа.

Следующий вызов возвращает информацию о текущей самой популярной статье (на момент написания книги):

https://hacker-news.firebaseio.com/v0/item/9884165.json

Ответ представляет собой словарь с информацией о статье с идентификатором 9884165:

{

(1) . .'url': 'http://www.bbc.co.uk/news/science-environment-33524589',

. .'type': 'story',

(2) . .'title': 'New Horizons: Nasa spacecraft speeds past Pluto',

(3) . .'descendants': 141,

. .'score': 230,

. .'time': 1436875181,

. .'text': '',

. .'by': 'nns',

. .'id': 9884165,

(4) . .'kids': [9884723, 9885099, 9884789, 9885604, 9885844]

}

Словарь содержит ряд ключей, которые могут нам пригодиться, — например, 'url' (1) и 'title' (2). Ключ 'descendants' содержит количество комментариев, полученных статьей (3). Ключ 'kids' предоставляет идентификаторы всех дочерних комментариев, сделанных непосредственно в ответ на эту статью (4). У каждого из этих комментариев могут быть свои дочерние комментарии, так что количество потомков у статьи может быть больше количества дочерних комментариев.

Создадим вызов API для получения идентификаторов статей, наиболее популярных на Hacker News, а затем рассмотрим каждую из этих статей:

hn_submissions.py

import requests

from operator import itemgetter

# Создание вызова API и сохранение ответа.

(1) url = 'https://hacker-news.firebaseio.com/v0/topstories.json'

r = requests.get(url)

Перейти на страницу:

Все книги серии Библиотека программиста

Программист-фанатик
Программист-фанатик

В этой книге вы не найдете описания конкретных технологий, алгоритмов и языков программирования — ценность ее не в этом. Она представляет собой сборник практических советов и рекомендаций, касающихся ситуаций, с которыми порой сталкивается любой разработчик: отсутствие мотивации, выбор приоритетов, психология программирования, отношения с руководством и коллегами и многие другие. Подобные знания обычно приходят лишь в результате многолетнего опыта реальной работы. По большому счету перед вами — ярко и увлекательно написанное руководство, которое поможет быстро сделать карьеру в индустрии разработки ПО любому, кто поставил себе такую цель. Конечно, опытные программисты могут найти некоторые идеи автора достаточно очевидными, но и для таких найдутся темы, которые позволят пересмотреть устоявшиеся взгляды и выйти на новый уровень мастерства. Для тех же, кто только в самом начале своего пути как разработчика, чтение данной книги, несомненно, откроет широчайшие перспективы. Издательство выражает благодарность Шувалову А. В. и Курышеву А. И. за помощь в работе над книгой.

Чед Фаулер

Программирование, программы, базы данных / Программирование / Книги по IT

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных