coding

Pygal — строим графики в svg

9 января 2017 г.

Сегодня будем знакомиться с пакетом визуализации pygal. Он используется для создания файлов с масштабируемой векторной графикой. Такие файлы отлично подходят для графического анализа в веб интерфейсах, т.к. они хорошо масштабируются для разных экранов без потери качества и уже имеют некоторую интерактивность.

Итак, устанавливаем сам пакет:

$ pip install pygal

Для построения нам нужно будет создать объект pygal нужного вида графика, передать туда некие данные для визуализации и сохранить полученный результат в файл или воспроизвести его где-то (например на странице нашего web-сайта). 

# Обязательно импортируем сам пакет
import pygal

# Затем создайте объект гистограммы
bar_chart = pygal.Bar()

# Передаем в объект данные
bar_chart.add('Fibonacci', [0, 1, 1, 2, 3, 5, 8]) 

# Сохраняем в файл с именем bar.svg
bar_chart.render_to_file('bar.svg')

Теперь можно будет открыть файл bar.svg например в браузере и наслаждаться результатом.

Для использования этого пакета в django, нужно во views.py в нужном представлении создать такой объект и передать его в переменную, вместо bar_chart.render_to_file('bar.svg') пишем:

plot = bar_chart.render_data_uri()

затем передаем эту переменную в шаблон:

return render(request, 'blog/statistic.html', {'plot': plot})

в шаблоне:

<figure>
    <embed type="image/svg+xml" src="{{ plot|safe }}"/>
</figure> 

Это самый простейший пример наглядно показывает как можно просто, красиво и без лишних затрат реализовать графический анализ данных, а в совокупности с форматом json или csv это становиться вообще просто. Так же добавлю, что в пакете pygal имеются десятки типов диаграмм и множество цветовых тем оформления (можно составить свою цветовую тему).

Тут можно посмотреть пример реализации на этом сайте.

http://www.pygal.org/ - тут вы найдете всю необходимую документацию для работы с этим замечательным пакетом.

Просмотров - 518

Оставить комментарий

Комментарий будет размещен на сайте после прохождения модерации.

Комментарии

Еще не оставлено ни одного комментария.