π¨ 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). π
- Address FutureWarning: 'H' is deprecated and will be removed in a future version. Please use 'h' instead of 'H'. by @t-jakubek in #291
- π Python 3.12 support by @jvdd in #292
- π₯ delegate nan behavior to aggregators by @jonasvdd in #294
- β‘οΈ code example:
- ποΈ high level docs
- π API docs
π¨ remove traceUpdater dash component as a dependency.
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.
π¨ This is a breaking change with previous Dash
apps!!!
- Support nested admonitions by @jonasvdd in #245
- π· build: create codeql.yml by @NielsPraet in #248
- β¨ first draft of improved xaxis filtering by @jonasvdd in #250
- β¬οΈ update dependencies by @jvdd in #260
- πͺ update dash-extensions by @jonasvdd in #261
- fix for #263 by @jonasvdd in #264
- Rangeslider support by @jonasvdd in #254
- π fix mkdocs by @jvdd in #268
βοΈ fix for #270 by @jonasvdd in #272- π adding init kwargs to show dash - fix for #265 by @jonasvdd in #269
- Refactor/remove trace updater by @jonasvdd in #281
- Bug/pop rangeselector by @jonasvdd in #279
- β¨ fix for #275 by @jonasvdd in #286
- Bug/rangeselector by @jonasvdd in #287
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
- π₯ multiple y-axes support by @jonasvdd in #244
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! βοΈ
- Support for log-scale axes (and thus log-bin-based aggregators) - check this pull-request
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.
- support for pandas2.0 intricacies
- fix: handle bool dtype for x in LTTB_core_py by @jvdd in #183
- fix: add colors to streamlit example π¨ by @jvdd in #187
- docs: describe solution in FAQ for slow datetime arrays by @jvdd in #184
- Rework aggregator interface by @jvdd in #186
- π integrate with tsdownsample by @jvdd in #191
- refactor: use composition for gap handling by @jvdd in #199
- β¨ np.array interface implementation by @jonasvdd in #154
- π§Ή fix typo in docstring + remove LTTB from MinMaxLTTB + remove interleave_gaps by @jonasvdd in #201
- chore: use ruff instead of isort by @jvdd in #200
- π adding marker props by @jonasvdd in #148
- Datetime bugfix by @jonasvdd in #209
- Fixes #210 by @jonasvdd in #211
- Log support by @jonasvdd in #207
- Datetime range by @jonasvdd in #213
- β¨ add fill_value option to gap handlers by @jonasvdd in #218
- β¨ fix
limit_to_view=True
but no gaps inserted bug by @jonasvdd in #220 - π convert trace props to array + check for nan removal by @jvdd in #225
- Figurewidget datetime bug by @jonasvdd in #232
- β»οΈ deprecate JupyterDash in favor for updated Dash version by @NielsPraet in #233
- π comment out reset layout by @jvdd in #228
- Docs/versioned docs (#236) by @jonasvdd in #237
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.
- π return self when calling add_traces by @jvdd in #75
- π₯ add streamlit integration example by @jvdd in #80
- β¨ adding
convert_traces_kwargs
by @jonasvdd in #81 - Fix numeric
hf_y
input as dtype object by @jonasvdd in #90 - π₯ add support for figure dict input + propagate _grid_str by @jvdd in #92
- π fix tests for all OS by @jvdd in #95
- Add python3dot10 by @jvdd in #96
- π FigureResampler display improvements by @jvdd in #97
- π¦ serialization support + ποΈ update OS & python version in test-matrix by @jvdd in #87
- Lttbv2 π βοΈ branch by @jonasvdd in #103
- π€ hack together output retention in notebooks by @jvdd in #105
- π¦ improve docs by @jvdd in #104
& some other minor bug fixes π
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.
- π¦ Adding reset-axes functionality by @jonasvdd in #48
- π Small bugfixes by @jonasvdd in #52
- π investigating gap-detection methodology by @jonasvdd in #53
- π fix float index problem of #63 by @jonasvdd in #64
- π§ hotfix for rounding error by @jonasvdd in #66
- π³οΈ Compose figs by @jonasvdd in #72
- β¨ register plotly-resampler by @jvdd in #70
- π€ update dependencies + new release by @jvdd in #74
Full Changelog: https://github.com/predict-idlab/plotly-resampler/compare/v0.6.0...v0.7.0