Skip to content

Commit

Permalink
Merge pull request ipython#4230 from fperez/mpl-backends
Browse files Browse the repository at this point in the history
Switch correctly to the user's default matplotlib backend after inline.

If '%matplotlib inline' was called first, we'd incorrectly revert to
inline when plain '%matplotlib' was called, instead of loading the
user's default GUI. If the user called '%matplotlib' first (without
'inline') it worked correctly, but not in the other order.

The fix is to read the backend from the original defaults, not from
the runtime data structure.

Requires matplotlib 1.1
  • Loading branch information
minrk committed Sep 25, 2013
2 parents 19c13a3 + 3a08cd8 commit d5a798e
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
6 changes: 5 additions & 1 deletion IPython/core/pylabtools.py
Expand Up @@ -214,7 +214,11 @@ def find_gui_and_backend(gui=None, gui_select=None):
# select backend based on requested gui
backend = backends[gui]
else:
backend = matplotlib.rcParams['backend']
# We need to read the backend from the original data structure, *not*
# from mpl.rcParams, since a prior invocation of %matplotlib may have
# overwritten that.
# WARNING: this assumes matplotlib 1.1 or newer!!
backend = matplotlib.rcParamsOrig['backend']
# In this case, we need to find what the appropriate gui selection call
# should be for IPython, so we can activate inputhook accordingly
gui = backend2gui.get(backend, None)
Expand Down
4 changes: 4 additions & 0 deletions docs/source/whatsnew/pr/incompat-mpl-backend.rst
@@ -0,0 +1,4 @@
We fixed an issue with switching between matplotlib inline and GUI backends,
but the fix requires matplotlib 1.1 or newer. So from now on, we consider
matplotlib 1.1 to be the minimally supported version for IPython. Older
versions for the most part will work, but we make no guarantees about it.

0 comments on commit d5a798e

Please sign in to comment.