Skip to content

Latest commit

 

History

History
173 lines (125 loc) · 12.6 KB

CHANGELOG.md

File metadata and controls

173 lines (125 loc) · 12.6 KB

Latest

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

v0.9.2

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.

🚨 This is a breaking change with previous Dash apps!!!

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: https://github.com/predict-idlab/plotly-resampler/compare/v0.9.1...v0.9.2

v0.9.1

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)

  • 🔥 multiple y-axes support by @jonasvdd in #244

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.

  • 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)

  • 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

v 0.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: https://github.com/predict-idlab/plotly-resampler/compare/v0.7.0...v0.8.0


V0.7.0

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: https://github.com/predict-idlab/plotly-resampler/compare/v0.6.0...v0.7.0