A Python library that adds dynamic data aggregation to Plotly figures for scalable visualization of large time series.
Plotly-Resampler is a Python library that extends Plotly figures with dynamic data aggregation functionality to enable efficient visualization of large time series datasets. It solves the performance problem of rendering millions of data points by resampling data on-the-fly based on the user's current viewport, ensuring smooth interactivity. The library integrates seamlessly with Plotly's existing API and supports various environments including Jupyter notebooks and Dash applications.
Data scientists, researchers, and developers working with large time series data who need interactive, scalable visualizations in Python, particularly those already using Plotly for data exploration and dashboarding.
Developers choose Plotly-Resampler because it provides a drop-in solution to make Plotly visualizations scalable without requiring major code changes or switching to a different plotting library. Its unique selling point is the combination of Plotly's rich interactivity with efficient dynamic aggregation, supporting environments from notebooks to standalone web apps.
Visualize large time series data with plotly.py
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Dynamically aggregates millions of data points using algorithms like MinMaxLTTB from tsdownsample, ensuring smooth zoom and pan without performance degradation.
Adds resampling functionality with minimal code changes via decorators or a global register function, preserving Plotly's familiar API.
Works in Jupyter notebooks, Dash apps, and other environments through FigureWidgetResampler and FigureResampler, offering flexibility.
Supports various aggregation methods, allowing users to choose or develop preferred algorithms for different data characteristics.
Overrides Plotly's default reset axes on double-click to autoscale based on visible data, improving user experience for exploration.
Only go.Scatter and go.Scattergl traces are resampled, limiting utility for other Plotly chart types like bars or lines with complex markers.
Requires an IPython kernel for FigureWidgetResampler or a Dash server for FigureResampler, adding setup complexity in non-supported environments.
The README warns about aliasing effects from downsampling, which can misrepresent data if aggregation parameters are not carefully tuned.
FigureWidgetResampler uses the IPython main thread, so long computations can delay resampling, reducing interactivity during heavy processing.