Skip to main content

Visualizing large time series with plotly

Project description

Plotly-Resampler logo

PyPI Latest Release support-version codecov Code quality PRs Welcome Documentation Testing

plotly_resampler: visualize large sequential data by adding resampling functionality to Plotly figures

Plotly is an awesome interactive visualization library, however it can get pretty slow when a lot of data points are visualized (100 000+ datapoints). This library solves this by downsampling the data respective to the view and then plotting the downsampled points. When you interact with the plot (panning, zooming, ...), dash callbacks are used to resample and redraw the 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 constructor 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 preferred 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 downsampling 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 🔨

  • Support .add_traces() (currently only .add_trace is supported)


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

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plotly-resampler-0.3.0.tar.gz (20.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

plotly_resampler-0.3.0-py3-none-any.whl (20.2 kB view details)

Uploaded Python 3

File details

Details for the file plotly-resampler-0.3.0.tar.gz.

File metadata

  • Download URL: plotly-resampler-0.3.0.tar.gz
  • Upload date:
  • Size: 20.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.8.10 Linux/5.4.0-100-generic

File hashes

Hashes for plotly-resampler-0.3.0.tar.gz
Algorithm Hash digest
SHA256 8cb266bb69a75fa7a1f56851b363e04704dc30a4e22dacb640ed5b3398b943f3
MD5 30bc2b9779e8d422c18e5143cc6bc2a5
BLAKE2b-256 e0f2f328b84906e7a0af0af3206a776d0682889d9bda9b523a5372e109b03372

See more details on using hashes here.

File details

Details for the file plotly_resampler-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: plotly_resampler-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 20.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.8.10 Linux/5.4.0-100-generic

File hashes

Hashes for plotly_resampler-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ca1d465326b4dad9b98c7e51d0f5c1a1e418f81c1ab982ea2876ad8121d18ee6
MD5 bfa55f2e84bf06530ab7be28583e8f86
BLAKE2b-256 d97f46c3b7035e0447c2ad89e61cab9a774fb21968a631bc435e3a1a3ba19c03

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page