Skip to content

Releases: predict-idlab/plotly-resampler

v0.10.0

27 Mar 07:58
Compare
Choose a tag to compare

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

Full Changelog: v0.9.2...v0.10.0

v0.9.2

14 Jan 18:45
7612315
Compare
Choose a tag to compare

New Features / major changes

⚑ overview / rangeslider support πŸŽ‰

  • ➑️ code example:
  • πŸ–οΈ high level docs
  • πŸ” API docs
    • make sure to take a look at the doc strings of the create_overview, overview_row_idxs, and overview_kwargs arguments of the FigureResampler its constructor.
      Peek 2023-10-25 01-51

πŸ’¨ 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

Full Changelog: v0.9.1...v0.9.2

v0.9.1: support for multiple axes

13 Jul 11:26
Compare
Choose a tag to compare

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

Peek 2023-07-13 10-24

What's Changed (generated)

Full Changelog: v0.9.0...v0.9.1

v0.9.0

12 Jul 08:36
Compare
Choose a tag to compare

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.

  • Add a fill-value option to gap handlers

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 the fill='tozeroy' option in plotly and gaps occur in your data, as this will, combined with line_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)

Full Changelog: v0.8.3.2...v0.9.0

v0.8.3.2 - dependency updates + bug fixes

08 Mar 16:15
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.8.3.1...v0.8.3.2

v0.8.3.1 - Cleanup & tuple bugfix

02 Feb 12:56
13d5034
Compare
Choose a tag to compare

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

Full Changelog: v0.8.3...v0.8.3.1

v.0.8.3 - object dtype index parsing

02 Dec 12:34
Compare
Choose a tag to compare

Main changes:

  • Try to parse the object dtype of the hf_x property in plotly-resampler, see #116 #120 #115
  • Add the check_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.

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

15 Aug 17:14
Compare
Choose a tag to compare

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`

17 Jun 13:25
002da45
Compare
Choose a tag to compare

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)

Full Changelog: v0.6.0...v0.7.0

v0.6.0 support for go.FigureWidget

06 May 13:54
Compare
Choose a tag to compare

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

  1. βœ”οΈ Able to use the on_click callback and thus create annotation app πŸ‘‰πŸΌ see this example notebook.
  2. βœ”οΈ No web-application with dash callbacks need to be started

You can just seamlessly use plolty-resampler within your jupyter environment, remote or local.