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

# Группировка стран по 3 уровням населения.

(1) cc_pops_1, cc_pops_2, cc_pops_3 = {}, {}, {}

(2)for cc, pop in cc_populations.items():

. .if pop < 10000000:

. . . .cc_pops_1[cc] = pop

. .elif pop < 1000000000:

. . . .cc_pops_2[cc] = pop

. .else:

. . . .cc_pops_3[cc] = pop

# Проверка количества стран на каждом уровне.

(3)print(len(cc_pops_1), len(cc_pops_2), len(cc_pops_3))

wm = pygal.Worldmap()

wm.title = 'World Population in 2010, by Country'

x wm.add('0-10m', cc_pops_1)

wm.add('10m-1bn', cc_pops_2)

wm.add('>1bn', cc_pops_3)

. .

wm.render_to_file('world_population.svg')

Чтобы сгруппировать страны, мы создаем пустой словарь для каждой категории (1) . Затем программа перебирает cc_populations и проверяет население каждой страны (2). Блок if-elif-else добавляет элемент в соответствующий словарь (cc_pops_1, cc_pops_2 или cc_pops_3) для каждой пары «код страны—население».

Рис. 16.10. Численность мирового населения в 2010 году

В точке (3) выводится длина каждого словаря для определения размеров групп. При нанесении данных на диаграмму (4) все три группы добавляются на диаграмму Worldmap. При запуске программы сначала выводятся размеры всех групп:

85 69 2

Вывод показывает, что существуют 85 стран с населением менее 10 миллионов, 69 стран с населением от 10 миллионов до 1 миллиарда и две особые страны с ­населением свыше 1 миллиарда. Разбиение получается достаточно равномерным для получения содержательной карты. Полученная карта изображена на рис. 16.10.

Три разных цвета помогают подчеркнуть различия между уровнями населения. В каждом из трех уровней страны окрашиваются от светлого к темному оттенку в соответствии с ростом численности населения.

<p>Оформление карты мира в Pygal</p>

Группировка стран на карте работает эффективно, но цвета по умолчанию выбираются довольно странно: например, в нашем примере Pygal выбирает схему с ярко-розовым и зеленым цветом. Директивы оформления Pygal помогут решить проблему с цветами.

В новой версии мы снова прикажем Pygal использовать один базовый цвет, но на этот раз выберем цвет и применим более выразительные оттенки для трех групп численности населения:

world_population.py

import json

import pygal

(1) from pygal.style import RotateStyle

...

# Группировка стран по 3 уровням населения.

cc_pops_1, cc_pops_2, cc_pops_3 = {}, {}, {}

for cc, pop in cc_populations.items():

. .if pop < 10000000:

. . . ....

(2)wm_style = RotateStyle('#336699')

(3)wm = pygal.Worldmap(style=wm_style)

wm.title = 'World Population in 2010, by Country'

...

Стили Pygal хранятся в модуле style, из которого программа импортирует стиль RotateStyle (1) . Этот класс получает один аргумент — цвет RGB в шестнадцатеричном формате (2). Затем Pygal выбирает цвета каждой группы на основании переданного цвета. Цвет в шестнадцатеричном формате представляет собой строку из символа решетки (#), за которым следуют шесть символов: первые два представляют красную составляющую цвета, следующие два — зеленую и последние два — синюю. Значения составляющих лежат в диапазоне от 00 (нулевая интенсивность) до FF (максимальная интенсивность). В Интернете можно легко найти приложение для экспериментов с цветами и получения соответствующих значений RGB. Цвет, используемый в данном случае (#336699), содержит немного красного (33), чуть больше зеленого (66) и еще больше синего (99). В результате RotateStyle назначается светло-синий базовый цвет для выполнения дальнейших операций.

RotateStyle возвращает объект стиля, который сохраняется в переменной wm_style. Чтобы использовать объект стиля, передайте его в именованном аргументе при создании экземпляра Worldmap (3). На рис. 16.11 изображена обновленная диаграмма.

Рис. 16.11. Три уровня численности населения в общей цветовой теме

Стилевое оформление придает карте целостный внешний вид с хорошо различимыми группами.

<p>Осветление темы</p>

По умолчанию Pygal использует темные темы оформления. Для печати я осветлил стиль своих диаграмм при помощи класса LightColorizedStyle. Этот класс изменяет общую тему оформления диаграммы, включая фон и метки, а также цвета отдельных стран. Чтобы использовать его, сначала необходимо импортировать стиль:

from pygal.style import LightColorizedStyle

Затем вы сможете использовать LightColorizedStyle в программе:

wm_style = LightColorizedStyle

Однако этот класс не позволяет напрямую управлять используемым цветом, поэтому Pygal выбирает базовый цвет по умолчанию. Чтобы назначить цвет, используйте LightColorizedStyle в качестве базового стиля для RotateStyle. Импортируйте LightColorizedStyle и RotateStyle:

from pygal.style import LightColorizedStyle, RotateStyle

Создайте стиль с использованием RotateStyle, но передайте дополнительный аргумент base_style:

wm_style = RotateStyle('#336699', base_style=LightColorizedStyle)

В результате для карты используется светлая общая тема, но цвета стран выбираются на основе цвета, переданного в аргументе. При использовании этого стиля ваши диаграммы будут больше похожи на снимки экрана на иллюстрациях.

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

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

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

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

Чед Фаулер

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

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

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

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

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

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

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

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

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