Visualize large time series data with plotly.py
๐จ Nan
handling has been delegated to the aggregators
, this implies that plotly-resampler
does not perform any nan-checks anymore (making it faster) ๐.
Consequently, we removed the check_nans
argument of the FigureResampler constructor and its add_traces
method. This argument was used to check for NaNs in the input data, but this is now handled by the nan_policy
argument of specific aggregators (see for instance the constructor of the MinMax
and MinMaxLTTB
aggregator). ๐
Full Changelog: https://github.com/predict-idlab/plotly-resampler/compare/v0.9.2...v0.10.0
overview
/ rangeslider
support ๐create_overview
, overview_row_idxs
, and overview_kwargs
arguments of the FigureResampler
its constructor.
context: see #281 #271
traceUpdater
was developed during a period when Dash did not yet contain the Patch feature for partial property updates. As such,traceUpdater
has become somewhat redundant is now effectively replaced with Patch.
Full Changelog: https://github.com/predict-idlab/plotly-resampler/compare/v0.9.1...v0.9.2
Support for multiple axes.
The .GIF
below demonstrates how multiple axes on a subplots can be used to enhance the number of visible traces, without using more (vertical) screen space ๐ฅ!
Make sure to take a look at our examples
Full Changelog: https://github.com/predict-idlab/plotly-resampler/compare/v0.9.0...v0.9.1
We switched our aggregation backend to tsdownsample, which alleviates the need to compile our C code on non-supported devices, and has parallelization capabilities.
tsdownsample
leverages the argminmax crate, which has SIMD-optimized instruction to find vertical extrema really fast!
With parallelization enabled, you should clearly see a bump in perfomance when visualizing (multiple) large traces! ๐
We restyled our documentation and added versioning! ๐
https://predict-idlab.github.io/plotly-resampler/latest/
Go check it out! :point_up:
The above image shows how the
log
aggregator (row2) will use log-scale bins. This can be seen in the 1-1000 range when comparing both subplots.
Note: the shown data has a fixed delta-x of 1. Hence, here are no exact equally spaced bins for the left part of the LogLTTB.
The above image shows how the
fill_value
option can be used to fill gaps with a specific value.
This can be of greate use, when you use thefill='tozeroy'
option in plotly and gaps occur in your data, as this will, combined withline_shape='vh'
, fill the area between the trace and the x-axis and gaps will be a flat zero-line.
limit_to_view=True
but no gaps inserted bug by @jonasvdd in https://github.com/predict-idlab/plotly-resampler/pull/220
Full Changelog: https://github.com/predict-idlab/plotly-resampler/compare/v0.8.3.2...v0.9.0
flask_cors
& kaleido
optional by @jvdd @jonasvdd in https://github.com/predict-idlab/plotly-resampler/pull/177
Full Changelog: https://github.com/predict-idlab/plotly-resampler/compare/v0.8.3.1...v0.8.3.2
basic_example.py
. by @jonasvdd in https://github.com/predict-idlab/plotly-resampler/pull/164
Full Changelog: https://github.com/predict-idlab/plotly-resampler/compare/v0.8.3...v0.8.3.1
object
dtype of the hf_x
property in plotly-resampler, see #116 #120 #115check_nan
option to the add_trace(s)
methods. Setting this variable to True allows for graph construction speedups when no Nans are present in your data.axes range
bug by @jvdd in https://github.com/predict-idlab/plotly-resampler/pull/126
Full Changelog: https://github.com/predict-idlab/plotly-resampler/compare/v0.8.0...v0.8.3
the lttbc
dependency is removed; and we added our own (faster) lttb C implementation. Additionally we provide a Python fallback when this lttb-C building fails. In the near future, we will look into CIBuildWheels to build the wheels for the major OS & Python matrix versions.
A well deserved s/o to dgoeris/lttbc, who heavily inspired our implementation!
Plotly-resampler now also has the option to store the output figure as an Image in notebook output. As long the notebook is connected, the interactive plotly-resampler figure is shown; but once the figure / notebook isn't connected anymore, a static image will be rendered in the notebook output.
convert_traces_kwargs
by @jonasvdd in https://github.com/predict-idlab/plotly-resampler/pull/81
hf_y
input as dtype object by @jonasvdd in https://github.com/predict-idlab/plotly-resampler/pull/90
& some other minor bug fixes :see_no_evil:
Full Changelog: https://github.com/predict-idlab/plotly-resampler/compare/v0.7.0...v0.8.0
You can register plotly_resampler; this adds dynamic resampling functionality under the hood to plotly.py! ๐ฅณ As a result, you can stop wrapping plotly figures with a plotly-resampler decorator (as this all happens automatically)
You only need to call the
register_plotly_resampler
method and all plotly figures will be wrapped (under the hood) according to that method's configuration.
-> More info in the README and docs!
Aditionally, all resampler Figures are now composable; implying that they can be decorated by themselves and all other types of plotly-(resampler) figures. This eases the switching from a FigureResampler to FigureWidgetResampler and vice-versa.
Full Changelog: https://github.com/predict-idlab/plotly-resampler/compare/v0.6.0...v0.7.0
The hf_data
property now allows adjusting the hf_traces
their data; documentation ๐
fig.hf_data[-1]["y"] = - sin ** 2
plotly-resampler
can now wrap plotly's FigureWidget graph-object with the FigureWidgetResampler (see #47).
This has several advantages
on_click
callback and thus create annotation app ๐๐ผ see this example notebook.You can just seamlessly use plolty-resampler within your jupyter environment, remote or local.