XY: библиотека графиков на Python с Rust-ядром рисует 100 млн точек за 0.08 секунды
Reflex выпустила XY — библиотеку для визуализации данных на Python с движком на Rust. Рендерит интерактивные графики с 10 млн точек в 34 раза быстрее Plotly, экспортирует в HTML весом 258 КБ вместо 259 МБ. Альфа-версия (0.0.1), но уже доступна через pip.
Если работаете с большими датасетами, вы знаете боль тормозящих графиков. XY решает это радикально — и это open source, доступный прямо сейчас.
Reflex выпустила XY — библиотеку визуализации для Python под лицензией Apache 2.0. Классические инструменты типа Matplotlib и Plotly создают отдельный объект для каждой точки, поэтому после нескольких сотен тысяч строк всё тормозит. XY решила проблему иначе: движок на Rust, передача бинарных данных вместо JSON и рендеринг через WebGL2.
Результат: время отрисовки держится около 0.08 секунды независимо от объёма — хоть 10 тысяч точек, хоть 100 миллионов. Для сравнения, Plotly на 10 млн точек тратит 3.4 секунды, Matplotlib — 2.8. Экспорт графика на 10 млн точек весит 258 КБ против 259 МБ у Plotly. Пиковое потребление памяти в три раза ниже конкурентов.
Библиотека хранит исходные данные в Python и умно выбирает уровень детализации для рендера: выше 10 тысяч строк включается децимация M4, выше 200 тысяч — автоматическая плотностная сетка. При зуме возвращаются точные значения. API декларативный, поддерживает 14 типов графиков (scatter, line, histogram, heatmap и др.), работает с CSS и Tailwind. Есть адаптер для Matplotlib pyplot.
Сейчас версия 0.0.1 (ранняя альфа), требует Python 3.11+. Установка — одна команда pip install xy.
Автор: Анна Мельникова · Источник: marktechpost.com
Разработчикам. Готовая альтернатива Plotly/Matplotlib для больших датасетов: API похож на pyplot, есть адаптер для миграции, поддержка CSS/Tailwind. Движок на Rust, WebGL2-рендер, бинарный транспорт. Интеграция с Reflex — компонент без JS/iframe. Требует Python 3.11+, работает из коробки.
Бизнесу. Резко снижает время загрузки дашбордов с большими данными (финансы, телеметрия, геномика). HTML-экспорт в тысячу раз легче — можно отправлять отчёты по почте вместо ссылок. Альфа-статус означает риск для продакшена, но для внутренних инструментов подходит уже сейчас.
Инвесторам. Apache 2.0, open source от Reflex — команды, которая делает фреймворк для веб-приложений на Python. Целевой рынок — data science инструменты, где Plotly и Matplotlib доминируют, но тормозят на больших объёмах. Ранний stage, но технически сильное решение для ниши quant/bio/observability.
- SaaS-дашборды для финансовых данных (тиковые графики, бэктесты стратегий) — клиенты платят за скорость
- Облачные ноутбуки и аналитические платформы (Jupyter-as-a-Service) — дифференциатор против DataBricks/Google Colab
- Инструменты для биоинформатики (Manhattan plots, GWAS) — академический и фарма-рынок
- Мониторинг и observability (Grafana-альтернативы) — рендер миллионов метрик без сэмплинга
- Геопространственная аналитика — интерактивные карты с миллионами точек (OpenStreetMap-кейс уже есть)
- Версия 0.0.1 — API нестабилен, документация неполная, багов много. Риск breaking changes до 1.0
- Экосистема Python-графиков огромна (Matplotlib, Plotly, Bokeh, Altair) — пробиться сложно, нужна сильная community
- Benchmark сделан на M5 Pro в одном запуске — статистически слабо, реальные показатели могут отличаться
- Rust-зависимость усложняет установку на экзотических платформах и тормозит контрибьюторов
Я смотрю на эти цифры и вспоминаю, сколько раз приходилось сэмплировать данные перед визуализацией, потому что Plotly просто ложился. XY атакует реальную проблему реальным решением — Rust-движок, бинарный транспорт, WebGL2. Benchmark впечатляет, но это один запуск на M5 Pro, хочется независимых проверок.
Альфа-статус — серьёзное ограничение. API может поломаться завтра, баги гарантированы, документация дырявая. Но если вы делаете внутренний дашборд для quant-команды или анализируете геномные данные — рискнуть стоит. Худшее, что случится — откатитесь на Plotly. Лучшее — получите инструмент, который даёт конкурентное преимущество прямо сейчас. Смотрите на Reflex: если команда дотянет до production-ready 1.0 и соберёт community — это может стать новым стандартом для heavy data viz.
Комментарии