Plotly-Resampler logo

PyPI Latest Release
codecov
Code quality
PRs Welcome
Documentation
Testing

plotly_resampler enables visualizing large sequential data by adding resampling functionality to Plotly figures.


example demo

In this Plotly-Resampler demo over 110,000,000 data points are visualized!

Installation

pip pip install plotly-resampler

Usage

To add dynamic resampling to your plotly Figure, you should;

  1. wrap the constructor of your plotly Figure with FigureResampler
  2. call .show_dash() on the Figure

(OPTIONAL) add the trace data as hf_x and hf_y (for faster initial loading)

Minimal example

import plotly.graph_objects as go; import numpy as np
from plotly_resampler import FigureResampler

x = np.arange(1_000_000)
noisy_sin = (3 + np.sin(x / 200) + np.random.randn(len(x)) / 10) * x / 1_000

fig = FigureResampler(go.Figure())
fig.add_trace(go.Scattergl(name='noisy sine', showlegend=True), hf_x=x, hf_y=noisy_sin)

fig.show_dash(mode='inline')

Features

  • Convenient to use:
    • just add the FigureResampler decorator around a plotly Figure consructor and call .show_dash()
    • allows all other ploty figure construction flexibility to be used!
  • Environment-independent
    • can be used in Jupyter, vscode-notebooks, Pycharm-notebooks, as application (on a server)
  • Interface for various downsampling algorithms:
    • ability to define your preffered sequence aggregation method

Important considerations & tips

  • When running the code on a server, you should forward the port of the FigureResampler.show_dash method to your local machine.
  • In general, when using downsamplingm one should be aware of (possible) aliasing effects.
    The [R] in the legend indicates when the corresponding trace is being resampled (and thus possibly distorted) or not.

Future work ?

  • Add downsampler methods that take aliasing into account
  • Parallelize the resampling


? Jonas Van Der Donckt, Jeroen Van Der Donckt, Emiel Deprost

GitHub

View Github