Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Интерактивная визуализация данных. Работа с библиотекой Plotly

Покупка
Новинка
Артикул: 844131.01.99
Доступ онлайн
500 ₽
В корзину
Рассмотрены возможности создания интерактивных графиков в Python с помощью библиотеки Plotly. Приведены примеры построения базовых графиков, таких как scatter-plot, line charts, bar charts, area chart, funnel chart и gantt chart. Рассмотрены вопросы форматирования построенных графиков: работа с макетом, обновление свойств объектов оси, добавление к графику кнопок, ползунков. Для оценки уровня усвоения студентами пройденного материала предложены варианты заданий для самостоятельной работы. Предназначено для бакалавров направлений подготовки 09.03.02 «Информационные системы и технологии», 22.03.01 «Материаловедение и технологии материалов», 28.03.02 «Наноинженерия», 18.03.01 «Химическая технология», 29.03.04 «Технология художественной обработки материалов», 29.03.05 «Конструирование изделий легкой промышленности», изучающих дисциплины «Информатика», «Информационные технологии», «Вычислительная математика», «Программирование», «Компьютерная графика». Подготовлено на кафедре информатики и прикладной математики.
Титов, А. Н. Интерактивная визуализация данных. Работа с библиотекой Plotly : учебно-методическое пособие / А. Н. Титов, Р. Ф. Тазиева ; Минобрнауки России, Казан. нац. исслед. технол. ун-т. - Казань : КНИТУ, 2023. - 136 с. - ISBN 978-5-7882-3387-1. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2172659 (дата обращения: 21.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Министерство науки и высшего образования Российской Федерации 
Казанский национальный исследовательский 
технологический университет 
 
 
 
 
 
 
 
А. Н. Титов, Р. Ф. Тазиева 
 
 
ИНТЕРАКТИВНАЯ 
ВИЗУАЛИЗАЦИЯ ДАННЫХ 
РАБОТА С БИБЛИОТЕКОЙ 
PLOTLY 
 
 
Учебно-методическое пособие 
 
 
 
 
 
 
 
 
 
 
 
Казань 
Издательство КНИТУ 
2023 


УДК 004.42(075) 
ББК 32.97я7 
Т45 
Печатается по решению редакционно-издательского совета  
Казанского национального исследовательского технологического университета 
Рецензенты: 
д-р пед. наук, доц. Ю. В. Торкунова 
канд. экон. наук, доц. О. С. Семичева 
Т45 
Титов А. Н. 
Интерактивная визуализация данных. Работа с библиотекой Plotly : 
учебно-методическое пособие / А. Н. Титов, Р. Ф. Тазиева; 
Минобрнауки России, Казан. нац. исслед. технол. ун-т. – Казань : 
Изд-во КНИТУ, 2023. – 136 с. 
ISBN 978-5-7882-3387-1 
Рассмотрены возможности создания интерактивных графиков в Python с помощью библиотеки Plotly. Приведены примеры построения базовых графиков, таких как scatter-plot, line charts, bar charts, area chart, funnel chart и gantt chart. Рассмотрены вопросы форматирования построенных графиков: работа с макетом, обновление свойств объектов оси, добавление к графику кнопок, ползунков. Для 
оценки уровня усвоения студентами пройденного материала предложены варианты заданий для самостоятельной работы. 
Предназначено для бакалавров направлений подготовки 09.03.02 «Информационные системы и технологии», 22.03.01 «Материаловедение и технологии материалов», 28.03.02 «Наноинженерия», 18.03.01 «Химическая технология», 
29.03.04 «Технология художественной обработки материалов», 29.03.05 «Конструирование изделий легкой промышленности», изучающих дисциплины «Информатика», «Информационные технологии», «Вычислительная математика», 
«Программирование», «Компьютерная графика». 
Подготовлено на кафедре информатики и прикладной математики. 
УДК 004.42(075) 
ББК 32.97я7 
ISBN 978-5-7882-3387-1 
© Титов А. Н., Тазиева Р. Ф., 2023 
© Казанский национальный исследовательский 
технологический университет, 2023 
2


О Г Л А В Л Е Н И Е
Введение 
......................................................................................................................... 4 
1. ПОСТРОЕНИЕ ПРОСТЕЙШИХ ГРАФИКОВ. РАБОТА
С ГРАФИЧЕСКИМ ОКНОМ 
....................................................................................... 6 
1.1. Простейшие графики в Plotly 
............................................................................ 6 
1.2. Работа с макетом. Метод update_layout ......................................................... 15 
1.2.1. Форматирование текста 
........................................................................ 19 
1.2.2. Форматирование легенды .................................................................... 21 
1.2.3. Настройка опций показа 
....................................................................... 27 
1.3. Добавление на график текста. Метод add_annotation 
................................... 32 
1.4. Обновление свойств объектов оси. Методы update_xaxes 
и update_yaxes 
.......................................................................................................... 39 
1.5. Добавление взаимодействия к графику ......................................................... 43 
1.6. Создание подграфиков. Метод make_subplots .............................................. 50 
2. ПОСТРОЕНИЕ ГРАФИКОВ В PLOTLY ............................................................. 59 
2.1. Исходные данные 
............................................................................................. 60 
2.2. Построение базовых графиков ....................................................................... 62 
2.2.1. Диаграмма рассеяния scatter ................................................................ 62 
2.2.2. Метод line............................................................................................... 87 
2.2.3. Метод bar ............................................................................................... 95 
2.2.4. Метод area 
............................................................................................ 107 
2.2.5. Метод funnel ........................................................................................ 116 
2.2.6. Метод timeline ..................................................................................... 125 
Задания для самостоятельной работы 
..................................................................... 129 
Литература ................................................................................................................. 134 
3 


В В Е Д Е Н И Е
Plotly (в URL-адресе Plot.ly) – технологическая компания со 
штаб-квартирой в Монреале. Она известна разработкой инструментов 
онлайн-аналитики, статистики и предоставляет библиотеки научного 
построения графиков для Python, R, MATLAB, Perl, Julia, Arduino 
и REST. Одной из таких библиотек является одноименная библиотека 
Plotly. Это open-source-библиотека для визуализации данных. Plotly изначально была написана на javascript и называлась plotly.js. Отличительной чертой библиотеки является ее интерактивность. Она предоставляет возможность выделения отдельных разделов графика, в ней 
можно создавать настраиваемые интерактивные инструменты, такие 
как кнопки, полосы прокрутки и раскрывающиеся списки, создавать 
эффекты анимации. Библиотека поддерживает объекты Pandas, что позволяет выполнять сложные преобразования данных. C ее помощью 
можно строить статистические, научные, финансовые диаграммы, трехмерные графики, геологические карты, информационные панели, API, 
анимации и т. д. 
На базе Plotly и веб-сервера Flask существует специальная библиотека для создания дашбордов Dash. C помощью Dash можно создавать веб-приложения, не вдаваясь в тонкости веб-разработки. Следует 
отметить, что в имеющейся литературе содержится описание лишь некоторых базовых атрибутов методов, в то время как каждый метод содержит порядка 30–40 параметров.  
В данном пособии авторы постарались более подробно описать 
атрибуты методов библиотеки и изложенный материал с целью облегчения его восприятия снабдили большим количеством примеров и пояснений к ним. 
Пособие включает в себя две главы. В первой главе рассмотрены 
этапы построения графиков в модулях библиотеки plotly.graph_objs 
и plotly.express, вопросы установки и настройки внешнего вида диаграммы и ее отдельных элементов: текстовых надписей, осей, легенды 
и т. д., описана настройка панели режимов. Показано, как можно внести 
изменения в построенный график: добавить на график текст, изменить 
вид имеющихся надписей, легенды, опций показа, добавить дополнительные инструменты, такие как выпадающие списки, кнопки, полосы 
прокрутки и т. д. Рассмотрены вопросы построения графиков в отдельных подокнах графического окна. 
4 


Во второй главе показано, как в модуле plotly.express можно осуществить визуализацию данных с помощью базовых методов библиотеки:  
scatter(), line(), area(), bar(), funnel(), timeline(). На большом количестве 
примеров продемонстрировано назначение параметров каждого метода. 
Материал, изложенный в пособии, может быть использован при 
проведении лабораторных занятий по информатике, информационным 
технологиям, обработке экспериментальных данных, вычислительной 
и прикладной математике. Используемая в пособии версия – Plotly 5.13.0. 
Вся работа по построению приведенных в пособии графиков 
была проведена в Jupyter Notebook. 
5 


.  П О С Т Р О Е Н И Е  П Р О С Т Е Й Ш И Х  
Г Р А Ф И К О В .  Р А Б О Т А  С  Г Р А Ф И Ч Е С К И М  О К Н О М
1 . 1 .  П р о с т е й ш и е  г р а ф и к и  в  P l o t l y
Plotly – это библиотека Python с открытым исходным кодом, которая используется для визуализации данных и поддерживает различные типы графиков, таких как линейные диаграммы, точечные диаграммы, гистограммы, диаграммы с областями и т. д. У Plotly есть возможности с помощью инструмента наведения получить доступ к значениям расположенных на графике данных. С ее помощью можно создавать визуально привлекательные графики и осуществлять их 
настройку. Библиотека Plotly не встроена в Python. Для ее установки 
нужно набрать pip install plotly в командной строке или !pip install plotly 
в Jupyter Notebook (% pip install  plotly).  
Plotly поддерживает самые быстроразвивающиеся библиотеки 
с открытым исходным кодом для R, Python и JavaScript. В библиотеке 
можно работать с разными модулями. Модуль plotly.graph_objects поддерживает иерархию классов Python. Основной класс объектов – Figure – содержит атрибуты data (данные) и layout (макет). Атрибут data 
содержит более 40 объектов, каждый из которых относится к определенному типу диаграммы с соответствующими ему параметрами. Атрибут layout определяет свойства рисунка в целом (оси, заголовок, 
формы, легенды и т. д.). Объект Figure может быть представлен либо 
в виде словаря, либо как экземпляр plotly.graph_objects.  
Модуль Plotly Express – объектно-ориентированный интерфейс 
для создания рисунков, выпущенный в 2019 г. Это высокоуровневая 
оболочка для Plotly.py, которая включает функции для построения 
стандартных 2D- и 3D-диаграмм и картограмм. Модуль plotly.express 
использует и возвращает объекты класса graph_objects. Можно сказать, 
что plotly.express по отношению к Plotly является тем же, чем Seaborn 
является по отношению к Matplotlib. 
Покажем, как можно построить простейший график в модулях 
plotly.graph_objs и plotly.express. 
6 


После импорта модуля plotly.graph_objs нужно сначала создать 
объект Figure (go.Figure()), а затем нанести на него графические объекты. go.Figure() вызывается для инициализации словарей или экземпляров Python как объектов класса plotly.graph_objects.Figure и сериализуется как текст формата JSON (Javascript ObjectNotation). Затем 
текст формата JSON передается в plotly.js для дальнейшей визуализации. Потом в этот объект надо передать данные (data), которые представляют собой совокупность графических методов. Данные – это словарь, элементы которого объектом go.Figure() передаются в plotly.js. 
Делается это следующим образом: go.Figure(data= [go.chart_type()]). 
Доступны следующие типы диаграмм (chart_type): go.Scatter, go.Bar, 
go.Pie и др. Далее необходимо инициализировать в chart_type значения, 
которые будут переданы в объектную функцию. Эти значения могут 
быть списком, словарем или серией numpy.ndarray. 
После создания фигуры (go.Figure()) к ней нужно добавить тип 
линии/диаграммы (trace). Для этого применяются методы add_trace() 
или append_trace(). Возможно построение более 40 типов диаграмм: 
scatter, bar, pie, surface, choropleth и т. д. 
Независимо от того как был построен рисунок, его можно обновлять, добавляя к нему дополнительные графики, и изменять его свойства. 
Построим график функции y=sinc(x), -10 ≤ x ≤ 10, по 100 точкам. 
Выполним код: 
import  plotly.graph_objs  as  go 
import numpy as np 
g=go.Figure() 
x=np.linspace(-10,10,100) 
def f(x): 
    return np.sinc(x) 
t=g.add_trace(go.Scatter(x=x,y=f(x))) 
t.show()
print(t)
Получим на выходе объект Figure, содержащий информацию 
о типе графика, его макете (layout) и два массива исходных данных 
со 100 значениями х и y: 
Figure({ 
  'data': [{'type': 'scatter', 
  'x': array([-10, … ,10]), 
     'y': array([-3.89817183e-17, … , -3.89817183e-17])}], 
  'layout': {'template': '...'}}) 
7 


По полученным значениям построен график гладкой кривой без 
подписей осей (рис. 1.1).  
 
Рис. 1.1. График функции y=sincx 
График получился интерактивным: при наведении на него курсора можно получить необходимую информацию и производить над 
ним определенные действия с помощью панели режимов, расположенной в правом верхнем углу рисунка. Панель содержит разные пиктограммы для разных типов графиков. Пример панели режимов представлен на рис. 1.2. 
 
Рис. 1.2. Панель режимов 
С ее помощью пользователь может производить различные манипуляции над построенным рисунком: при наведении курсора на график 
его можно приближать и удалять (Zoom, Zoom In, Zoom Out), выделять 
отдельные его участки, используя разные способы выделения (Box Select или Lasso Select), получать информацию при наведении на точку 
графика (координаты точки и т. д.), возвращать график в первоначальное положение (Reset Axes), делать снимок экрана и сохранять полученное изображение как файл.  
По умолчанию панель режимов видна только тогда, когда пользователь наводит курсор на график. Если необходимо, чтобы панель режимов была видна всегда, для параметра config метода show() нужно 
установить значение атрибута displayModeBar равным True:  
fig.show(config={"displayModeBar": True}) 
8 


Здесь fig – имя полученного графического объекта. В приведенном примере имя объекта – t. 
Можно сделать так, чтобы панель не отображалась, удалив ее 
с экрана: fig.show(config={"displayModeBar": False}). 
Панель режимов включает в себя логотип Plotly в конце панели. 
Его можно убрать: fig.show(config={"displaylogo": False}). 
Определенные кнопки можно удалить с панели режимов с помощью параметров modeBarButtonsToRemove. При этом нужно передать 
параметру config список строк с именами кнопок, которые нужно удалить из панели. Например: 
fig.show(config={"displayModeBar": True, "displaylogo": False, 
    'modeBarButtonsToRemove': [ 'zoom2d',     'toggleSpikelines', 
    'pan2d', 'select2d', 'lasso2d', 'autoScale2d', 'hoverClosestCartesian', 
    'hoverCompareCartesian']}) 
График Plotly можно отобразить как статическую диаграмму с использованием параметра staticPlot, который по умолчанию равен False. 
Отображение в виде статической диаграммы автоматически скрывает панель режимов, поскольку график не является интерактивным. Сделать это 
можно таким образом: fig.show(config={'staticPlot': True}). 
Установив опцию scrollZoom, можно увеличивать и уменьшать 
изображения с помощью колеса прокрутки мыши и/или прокрутки 
двумя пальцами: config = dict({'scrollZoom': True}). 
Значок камеры на панели режимов вызывает сохранение статической версии рисунка через браузер пользователя. По умолчанию изображение сохраняется в формате PNG размером 700 на 450 пикселей. 
Указанные параметры сохраняемого изображения можно изменить, задав значение ключа toImageButtonOptions параметра config. 
Например, с помощью приведенного кода можно задать формат изображения как 'svg' и установить разрешение равным 500 на 700 пикселей: 
config = { 
    'toImageButtonOptions': { 
    'format': 'svg', # one of png, svg, jpeg, webp 
    'filename': 'custom_image', 
    'height': 500, 
    'width': 700, 
    'scale': 1 # Multiply title/legend/axis/canvas sizes by this factor }} 
9 


Сохранить рисунок в текущем отображаемом размере можно, 
установив height и width равным None: config = { 'toImageButtonOptions': 
{ 'height': None, 'width': None, }}. 
Некоторые кнопки режима графиков в декартовых координатах 
являются необязательными и могут быть добавлены явно с использованием атрибута modeBarButtonsToAdd. Эти кнопки используются для рисования или стирания фигур: 
fig.show(config={'modeBarButtonsToAdd':['drawline', 
                                        'drawopenpath', 
                                        'drawclosedpath', 
                                        'drawcircle', 
                                        'drawrect', 
                                        'eraseshape' 
                                       ]}) 
Также можно воспользоваться атрибутом layout.modebar.add метода update_layout:  
fig.update_layout( 
        modebar_add=['drawline', 
        'drawopenpath', 
        'drawclosedpath', 
        'drawcircle', 
        'drawrect', 
        'eraseshape' 
       ]) 
Plotly поставляется с предварительно загруженными шаблонами 
(шаблон – template), что позволяет установить внешний вид диаграммы. 
Посмотреть, как будет выглядеть построенный график при использовании разных шаблонов, можно, выполнив код: 
import  plotly.graph_objs  as  go  
import numpy as np 
x=np.linspace(-10,10,100) 
t=go.Figure().add_trace(go.Scatter(x=x,y=np.sinc(x))) 
example_templates = ["plotly", "plotly_white",  
        "plotly_dark", "ggplot2", "seaborn",  
        "simple_white", "none"] 
for template in example_templates: 
    t.update_layout(template=template) 
    t.show() 
10 


Доступ онлайн
500 ₽
В корзину