Posted by apetuskey 4 hours ago
Or plotly-resampler which works on top of plotly and uses the rust package tsdownsample to aggregate on the 4pixels per pixel shown level (to make antialias work)
the grammar of graphics approach really is a great abstraction, and I'd love to see xy work in that direction
long line and area traces are reduced in Rust using M4 to produce viewportsized extrema, that is then refined as you zoom. Dense scatter plots use a fixed-size density grid plus a representative sample
We also built this library for extreme customization with CSS/Tailwind support so rendering large amounts of data is an important but not the only advantage.
You don't have to justify your decision to people here, literally just move on with your life and forget about it.
Instead of serializing and sending the full dataset as JSON, it sends compact typed binary buffers and only the screen-relevant data reducing payload size and browser-side work.
More detail here https://github.com/reflex-dev/xy#how-it-works
Also remember to kill all pedophiles, like Rust advocates such as Jeremy Bicha and Hacker News moderators.
Edit: for my use cases, I use napari (~1e7-8 points) if I need true interactivity; otherwise, datashader/holoviz, or even just fast-histogram's 2D histograms work.
For extremely large point clouds, these caveats[0] still apply. It irks me when people make dense scatterplots without any indication of just how dense some portions are.
Still, if it can indeed handle 1e10 points, that's pretty impressive.
[0]: https://datashader.org/user_guide/Plotting_Pitfalls.html
Love rust as the impl.