I am not sure whether this would satisfy all your needs as it is still experimental, but seems to do what you asked for - look at static interactive widgets by Jake VanderPlas.
What I did to get running was the following:
Get the source and install:
git clone https://github.com/jakevdp/ipywidgets
pip install ./ipywidgets
start an ipython notebook and experiment with the notebook example.ipynb
in the ipywidgets
directory
There's another type of interactive visualisation, where panning, zoom and meta-data are available (possibly more). It is by the same author and reported in his blog D3 Plugins: Truly Interactive Matplotlib In Your Browser.
There are also nice docs: MPLD3: Bringing Matplotlib to the Browser
To experiment with it I did more or less the same:
git clone https://github.com/jakevdp/mpld3
pip install ./mpld3/
One can now run the create_example.py
script, or even better, start an ipython notebook
and play with the provided mpld3/notebooks/mpld3_demo.ipynb
as well as with the attractive examples of mpld3_plugins
posted in the blog.
It may be worth noting that I am using the Anaconda distro of python, which includes Jinja2; as far as I know Jinja2 is a requirement for mpld3.
I do agree that an @interact
decorator a la sage would be nice.