Добавление подсказок

We use cookies. Read the Privacy and Cookie Policy

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

(1) plot_dicts = [

(2) . .{'value': 16101, 'label': 'Description of httpie.'},

. .{'value': 15028, 'label': 'Description of django.'},

. .{'value': 14798, 'label': 'Description of flask.'},

. .]

(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 включает количество звезд как подсказку по ­умолчанию в дополнение к нестандартной подсказке, которую мы определили в программе.