Открыть сервис

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 →