Releases: predict-idlab/plotly-resampler
v0.10.0
New features
π¨ 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). π
What's Changed
- 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
New Contributors
- @t-jakubek made their first contribution in #291
Full Changelog: v0.9.2...v0.10.0
v0.9.2
New Features / major changes
β‘ overview
/ rangeslider
support π
- β‘οΈ 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.
What's Changed
- 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: v0.9.1...v0.9.2
v0.9.1: support for multiple axes
Major changes:
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
What's Changed (generated)
Full Changelog: v0.9.0...v0.9.1
v0.9.0
Major changes:
Even faster aggregation π
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! π
Versioned docs! :party:
We restyled our documentation and added versioning! π
https://predict-idlab.github.io/plotly-resampler/latest/
Go check it out! βοΈ
Other Features
- 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.
Bugfixes
- support for pandas2.0 intricacies
What's Changed (generated)
- 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
Full Changelog: v0.8.3.2...v0.9.0
v0.8.3.2 - dependency updates + bug fixes
What's Changed
- π return None when rounding 0 by @jvdd @jonasvdd in #172
- test: add tests for #123 by @jvdd in #176
- Remove locked werkzeug dependency due to CVE-2023-25577 by @imichaelmoore in #174
- β¨ making
flask_cors
&kaleido
optional by @jvdd @jonasvdd in #177
New Contributors
- @imichaelmoore made their first contribution in #174
Full Changelog: v0.8.3.1...v0.8.3.2
v0.8.3.1 - Cleanup & tuple bugfix
What's Changed
- π bugifx for #144 by @jonasvdd in #145
- π¨ formatting + linting in CI-CD by @jvdd in #143
- β¬οΈ support Python 3.11 by @jvdd in #150
- π§Ή refurb cleanup + one typo by @jayceslesar in #152
- π§Ή clean up CONTRIBUTING.md by @jvdd in #160
- Improve monotonic assert + fix black formatting in vscode by @jonasvdd in #162
- β¨ add confidence bound example + more figure retention in
basic_example.py
. by @jonasvdd in #164
New Contributors
- @jayceslesar made their first contribution in #152
Full Changelog: v0.8.3...v0.8.3.1
v.0.8.3 - object dtype index parsing
Main changes:
- Try to parse the
object
dtype of thehf_x
property in plotly-resampler, see #116 #120 #115 - Add the
check_nan
option to theadd_trace(s)
methods. Setting this variable to True allows for graph construction speedups when no Nans are present in your data.
What's Changed
- ποΈ add contributing guide + changelog by @jvdd in #111
- π§ Tweaks - improve code quality, fix type-checking bug when IPywidgets is not installed & loosen up plotly-version by @jonasvdd in #114
- π update layout
axes range
bug by @jvdd in #126 - β¨ fix + test for #124 by @jonasvdd in #127
- π¨ making orjson non-option and fixating werkzeug #123 by @jonasvdd in #128
- πͺπΌ making orjson serialization more robust, see #118 by @jonasvdd in #131
- Resample bug, see #137 by @jonasvdd in #138
- β¨ add check_nans to add_trace(s) by @jvdd in #140
- π parse object arrays for hf_x by @jvdd in #116
Full Changelog: v0.8.0...v0.8.3
v0.8.0
Major changes
Faster aggregation π
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!
Figure Output serialization πΈ
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.
What's Changed (generated)
- π 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: v0.7.0...v0.8.0
v0.7.0 - composability & `register_plotly_resampler`
What's Changed
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.
What's Changed (PR's)
- π¦ 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: v0.6.0...v0.7.0
v0.6.0 support for go.FigureWidget
What's Changed
Dynamically adjusting raw data π§
The hf_data
property now allows adjusting the hf_traces
their data; documentation π
fig.hf_data[-1]["y"] = - sin ** 2
FigureWidget support π
plotly-resampler
can now wrap plotly's FigureWidget graph-object with the FigureWidgetResampler (see #47).
This has several advantages
- βοΈ Able to use the
on_click
callback and thus create annotation app ππΌ see this example notebook. - βοΈ No web-application with dash callbacks need to be started
You can just seamlessly use plolty-resampler within your jupyter environment, remote or local.