Plotly: библиотека визуализации данных¶
Plotly — это библиотека для создания интерактивных графиков и визуализации данных, доступная для нескольких языков программирования, включая Python, R, JavaScript и Julia. Она позволяет строить широкий спектр диаграмм — от простых линейных и столбчатых до сложных трёхмерных поверхностей и географических карт — с возможностью масштабирования, панорамирования и отображения всплывающих подсказок. Plotly распространяется как коммерческое программное обеспечение с открытым исходным кодом: базовая функциональность доступна бесплатно, а расширенные возможности для корпоративного использования предоставляются по подписке.
¶История
Проект Plotly был основан в 2012 году Алексом Джонсоном, Крисом Пармером, Мэтью Сандквистом и другими разработчиками в Монреале, Канада. Первоначально сервис позиционировался как веб-платформа для совместной работы с данными и графиками, доступная через браузер. В 2013 году была выпущена первая версия библиотеки для Python, что значительно расширило аудиторию проекта среди специалистов по анализу данных.
Ключевым этапом развития стало создание фреймворка Plotly.js на JavaScript, который лёг в основу всех остальных реализаций. В 2015 году компания выпустила библиотеку Dash — фреймворк для создания веб-приложений с интерактивными панелями мониторинга на чистом Python. В 2016 году исходный код ядра Plotly.js был открыт под лицензией MIT, что привело к росту популярности библиотеки в научном сообществе и индустрии.
В 2019 году Plotly представила новое поколение библиотеки для Python — Plotly Express, которая предоставляет высокоуровневый интерфейс для быстрого создания графиков с минимальным количеством кода. По состоянию на 2024 год Plotly используется в таких компаниях, как Google, NASA, Tesla и Всемирный банк, а также входит в стандартный набор инструментов многих исследовательских групп.
¶Архитектура и принцип работы
Plotly построена на концепции декларативного описания графиков. Пользователь не управляет отрисовкой напрямую, а описывает структуру данных и параметры визуализации в виде словаря или объекта. Эта спецификация передаётся в Plotly.js, который преобразует её в SVG, WebGL или Canvas для отображения в браузере.
Основными компонентами архитектуры являются:
- Plotly.js — ядро на JavaScript, отвечающее за рендеринг и интерактивность. Работает во всех современных браузерах и поддерживает экспорт в форматы PNG, SVG и PDF.
- Обёртки для языков программирования — Python, R, Julia и другие. Эти обёртки генерируют JSON-спецификацию графика и передают её в Plotly.js либо через Jupyter Notebook, либо через автономный HTML-файл.
- Chart Studio — облачный сервис для совместной работы, где можно загружать данные, создавать графики и публиковать их в интернете. Бесплатный тариф ограничен количеством публичных графиков, корпоративные тарифы предоставляют приватные хранилища и дополнительные функции.
- Dash — отдельный фреймворк, использующий Plotly для создания многостраничных приложений с реактивными компонентами. Dash позволяет связывать графики с выпадающими списками, ползунками и таблицами без написания JavaScript-кода.
¶Основные возможности
¶Типы визуализации
Plotly поддерживает более 40 типов графиков, которые условно можно разделить на несколько категорий:
- Стандартные — линейные, столбчатые, точечные, круговые и кольцевые диаграммы, гистограммы, боксплоты, диаграммы рассеяния с линиями регрессии.
- Статистические — ящики с усами, скрипичные диаграммы, тепловые карты, графики плотности распределения, параллельные координаты.
- Трёхмерные — поверхности, трёхмерные линии и точки, объёмные гистограммы, изоповерхности.
- Географические — хороплеты (заливка регионов на карте), пузырьковые карты, маршруты на карте, использующие базовые карты OpenStreetMap или Mapbox.
- Финансовые — свечные графики, графики «крестики-нолики», водопадные диаграммы.
- Специализированные — сетевые графы, санкей-диаграммы (потоковые диаграммы), древовидные карты, полярные графики, тернарные диаграммы.
¶Интерактивность
По умолчанию все графики Plotly интерактивны. Пользователь может приближать и отдалять изображение, перемещать его, наводить курсор для просмотра точных значений в всплывающей подсказке. В правом верхнем углу графика автоматически появляется панель инструментов, позволяющая сохранять изображение, включать режим масштабирования и выполнять другие действия. Разработчик может программно отключать эти элементы или настраивать их поведение.
¶Кастомизация и стилизация
Библиотека предоставляет детальный контроль над внешним видом графика: цветовые палитры, шрифты, размеры полей, положение легенды, формат осей и делений. Поддерживаются шаблоны оформления, что позволяет единообразно оформлять серии графиков в рамках одного проекта. Также доступна анимация — можно создавать графики, изменяющиеся во времени, используя кадры и переходы.
¶Plotly Express
Plotly Express — это высокоуровневый модуль, включённый в состав Plotly для Python начиная с версии 4.0. Он предоставляет лаконичный синтаксис, ориентированный на работу с табличными данными, особенно с объектами DataFrame из библиотеки Pandas. Например, для создания точечного графика достаточно одной строки кода:
``python import plotly.express as px fig = px.scatter(df, x="колонка_X", y="колонка_Y", color="категория") ``
Plotly Express автоматически подбирает тип графика на основе данных и предоставляет разумные настройки по умолчанию. При этом сгенерированный объект полностью совместим с низкоуровневым API Plotly, что позволяет дорабатывать график вручную. Express поддерживает около 30 типов графиков, включая статистические, географические и трёхмерные.
¶Сравнение с аналогами
Основными конкурентами Plotly на рынке библиотек визуализации являются Matplotlib, Seaborn, Bokeh и ggplot2 для языка R.
- Matplotlib — старейшая и наиболее распространённая библиотека Python. Создаёт статичные изображения высокого качества, но требует значительного объёма кода для сложных графиков и не поддерживает интерактивность «из коробки».
- Seaborn — построена поверх Matplotlib, предоставляет более удобный синтаксис для статистических графиков и приятные темы оформления, однако наследует ограничения статичного рендеринга.
- Bokeh — как и Plotly, ориентирована на интерактивные веб-визуализации, но имеет более крутую кривую обучения и меньшее количество встроенных типов графиков.
- ggplot2 — стандарт де-факто для визуализации в R, основан на грамматике графиков. Plotly предоставляет функцию
ggplotly(), которая конвертирует объект ggplot2 в интерактивный график Plotly.
Ключевым преимуществом Plotly считается сочетание богатой функциональности, простоты использования через Plotly Express и возможности развёртывания полноценных дашбордов через Dash без знания веб-технологий.
¶Применение
Plotly широко используется в следующих областях:
- Научные исследования — для визуализации экспериментальных данных, построения трёхмерных моделей молекул и физических полей, создания интерактивных приложений для публикации результатов.
- Финансовый анализ — для построения свечных графиков, анализа портфелей, визуализации временных рядов и рыночных корреляций.
- Биоинформатика — для отображения геномных данных, тепловых карт экспрессии генов, филогенетических деревьев.
- Образование — как инструмент для обучения статистике и науке о данных, поскольку интерактивные графики нагляднее статичных изображений в учебниках.
- Бизнес-аналитика — для создания панелей мониторинга ключевых показателей, которые можно встроить в корпоративные веб-порталы.
¶Лицензирование и экономика
Plotly распространяется по двойной лицензии. Plotly.js и Python-библиотека доступны под лицензией MIT, что позволяет свободно использовать их в коммерческих и закрытых проектах. Однако ряд возможностей — такие как совместная работа в реальном времени, приватные графики в Chart Studio, корпоративная поддержка и серверные решения для развёртывания Dash — требуют платной подписки. Компания Plotly также предлагает бесплатные академические лицензии для университетов и исследовательских институтов.
¶Критика и ограничения
Несмотря на популярность, Plotly имеет ряд недостатков. Основной из них — производительность: при отрисовке десятков тысяч точек интерактивность может снижаться, особенно при использовании SVG-рендеринга. Для больших данных рекомендуется использовать WebGL-режим или агрегацию данных. Также критике подвергается документация, которая, будучи обширной, иногда содержит устаревшие примеры и не всегда раскрывает тонкости работы с новыми версиями. Некоторые пользователи отмечают, что графики Plotly имеют характерный «веб-вид», который может не соответствовать строгим требованиям к оформлению в научных публикациях, где чаще используется Matplotlib.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →

