boutproject / xBOUT

Collects BOUT++ data from parallelized simulations into xarray.
https://xbout.readthedocs.io/en/latest/
Apache License 2.0
21 stars 10 forks source link

additional backends for animations #147

Open johnomotani opened 4 years ago

johnomotani commented 4 years ago

It might be nice to support multiple backends for animations. Shouldn't be too hard to refactor the animation methods to just pass off the actual plotting to different external libraries.

Collecting interesting possible back-ends in the comments to this thread. Please add more if you find them!

johnomotani commented 4 years ago

bqplot

https://github.com/bqplot/bqplot

Thanks to @hahahasan for finding it!

johnomotani commented 4 years ago

mpl_interactions

https://github.com/ianhi/mpl-interactions

Thanks to its main developer @ianhi for finding us!

ianhi commented 4 years ago

Thanks @johnomotani. Here are a few thougts on the libraries you've already mentioend and two new suggestions:

mpl-interactions

works with ipympl jupyter widget

Also works outside of a notebook, uses matplotlib sliders in that case

active development community - welcomes contributions

Definitely welcomes contributors! Although beware that thus far active community has primarily meant my friends or people in lab.

xarray

Just found these issues - it looks like they're working on building an xarray.interactive module whihc would be aweome!

https://github.com/pydata/xarray/pull/2729 and the more current approach: https://github.com/pydata/xarray/issues/3709

bqplot

Very easy to animate, you can just do things like line.x = new_data and it will pretty much "just work". Developed by a lot of the people who somewhat core to the jupyter ecosystem. I think that the biggest downside is that you'd be locked into jupyter notebooks/lab.

bokeh https://docs.bokeh.org/en/latest/index.html

Also looks pretty great, though I've never used much because at some point I started suffering from choice paralysis. I think this is the primary backend used for holoviews

(I've been so overwhelmed with choosing what library to use in in this space, there seem to be so many good options)