raychis 8 minutes ago

Interesting approach to large scale visualisation. Moving reduction into Rust and sending screen bounded data to WebGL seems much more sensible than pushing millions of raw points into the browser. How does it perform with real time updates? I am assuming it is much more performant? Any plans for a prod deployment?

  • apetuskey 2 minutes ago

    Yes its is more performant than existing Python charting libs for updates https://github.com/reflex-dev/xy#how-it-works

    The details can be found here but essentially instead of sending everything as JSON it sends a more compact payload of typed binary buffers reducing the size of the data sent

hantusk 8 minutes ago

Check out mosaic from uwdata which works on top of Observable plot

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

kasts 4 hours ago

I’m not convinced GPU acceleration is a meaningful advantage for most charting use cases. Most dashboards don’t render enough data for it to matter. Once a chart is dense enough for rendering to become the bottleneck, it normally is already be too crowded to be meaningful. Zooming can justify supporting larger datasets, but sampling/viewport culling and level of detail often avoid drawing unnecessary points...

  • Evidlo 3 hours ago

    I constantly have to work around the slowness of matplotlib when creating animated sequences for my scientific work (even with the Agg back end)

    • apetuskey 3 hours ago

      How many points are you working with usually?

  • apetuskey 4 hours ago

    It depends on how much data you are planning on showing, but as you can see from the benchmarks its also more performant than other python charting libs for small data.

    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.

  • formerly_proven 4 hours ago

    There are some niche charting applications which are offloaded to FPGAs and even ASICs.

ahns 2 hours ago

Interesting; how do the examples compare to datashader?

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

HoneySpoons 2 hours ago

This is awesome, can easily see this becoming a standard library. Can't wait for the 3D and volume visualizations.

NickyHeC 4 hours ago

been stuck on matplotlib for centuries, academia loves such a change

  • apetuskey 4 hours ago

    Thanks! Yes we are working on a Matplotlib compatible Api its very early but we hope to polish it up soon.

kl01 2 hours ago

how does this stack up to evilcharts? my main use case is mapping out data onto frontend, and there are a lot of great libraries out there

  • apetuskey 2 hours ago

    its a python charting library

pcpliu 4 hours ago

I misread it as ‘Chatting’ library and I was so confused on the GitHub page.

Love rust as the impl.

airstrike 4 hours ago

> XY is an extremely fast, interactive, customizable Python charting library for the web

  • apetuskey 4 hours ago

    I have adjusted the title

farhan99 5 hours ago

Great, Rust and Tailwind CSS two of my favorite things in one.

kl01 3 hours ago

absolutely fantastic.

ranger_danger 4 hours ago

> written in Rust

> XY is an extremely fast, interactive, customizable Python charting library

which is it?

  • xg15 4 hours ago

    Python libraries can have compiled artifacts that were written in any language. This is such a library.

  • apetuskey 4 hours ago

    Its a Python library with some rust in it, to speed up some of the calculations

cozzyd 4 hours ago

no support for native GUI?

  • apetuskey 4 hours ago

    What do you mean by this?

    • cozzyd 2 hours ago

      like, not in a browser?

kl01 3 hours ago

super cool!