Control over matplotlib backend & various bug fixes
New features:
- Create animated plots in an environment with a non-interactive `matplotlib` plotting backend set, without disrupting the global plotting backend
![](https://user-images.githubusercontent.com/26118297/96681820-de689880-1345-11eb-9d17-31abbc82ad3c.gif)
- Create non-animated, interactive plots for easy inspection of data using the new `interactive` keyword argument
![](https://user-images.githubusercontent.com/26118297/96682533-f2f96080-1346-11eb-9c85-0a64aac57098.gif)
- Set the plotting backend for a single plot using the new `mpl_backend` keyword argument, and easily switch between backends within a single Python interpreter session, IPython kernel, and even Jupyter notebook cell
![](https://user-images.githubusercontent.com/26118297/96685859-b54b0680-134b-11eb-98fb-906069d21856.gif)
- Use the new `hypertools.set_interactive_backend` function to change the backend for all future plots, or use it as a context manager to temporarily switch to a different backend. You can also use this to create multiple animated/interactive plots simultaneously.
![](https://user-images.githubusercontent.com/26118297/96688723-7e76ef80-134f-11eb-9b02-56bcd62a92cf.gif)
- use `hypertools`'s backend adjustments to control behavior of other plotting libraries
![](https://user-images.githubusercontent.com/26118297/96691294-bcc1de00-1352-11eb-971c-3ee9c1098b46.gif)
- Set the `$HYPERTOOLS_BACKEND` environment variable to permanently set your preferred plotting backend for non-IPython environments
**NB**: Currently supported backends include TkInter, GTK, wxPython, Qt4, Qt5, Cocoa (aka MacOSX; MacOS only), notebook/nbAgg (Jupyter notebooks only), and ipympl/widget (Jupyter notebooks only). 3D and interactive plots may not render properly in Colab notebooks due to security restrictions imposed by the Colaboratory platform.
Bug fixes
- importing `hypertools` in a notebook no longer creates phantom Python processes, issues warnings when TkInter isn't installed, fails if `matplotlib.pyplot` was imported first, or silently changes the plotting backend (fixes 242)
- creating 3D plots with `hypertools` no longer alters the global `matplotlib.rcParams` object (fixes 243)
- `hypertools` can now be imported for non-plotting-related uses in environments without a compatible GUI without throwing an error
- IPython's TAB-completion no longer triggers a full import of `hypertools` or improperly sets the plotting backend based on the subprocess's environment
- require `scikit-learn<0.24` (full spec: `scikit-learn>=0.19.1,!=0.22,<0.24`) to avoid bug when loading pre-trained `DataGeometry` objects due to renamed sklearn module