matplotlib 内联和 QT 后端之间的 Python 脚本切换

gap*_*hys 2 python qt backend matplotlib

我希望能够在内联显示 matplotlib 图形或在脚本文件中使用 QT 后端之间切换,基于一个名为 inlinemode 的变量,例如下面的代码片段

import matplotlib.pylab as plt
inlinemode = False
if inlinemode:   
    print "plot will be inline..."
else:
    print "plot will be qt..."
    plt.switch_backend('qt4agg')
plt.figure()
plt.plot(range(10))
Run Code Online (Sandbox Code Playgroud)

我的 IPython 控制台默认以内联模式启动,并且执行上面的代码片段仍然会生成内联图而不是 qt 窗口。如果可以在 if 块中发送 IPython magic %matplotlib inline -or- %matplotlib qt,这将完成此任务。但是,根据我所收集到的信息,不可能从脚本文件中发送这些魔法。

任何建议将不胜感激!

(仅供参考:我在 Windows 10 上的 Anaconda Python 2.7 中从 Spyder 运行)

Kev*_*n S 6

使用以下块可以实现这一点,这将允许使用%run或直接通过标准 python在 IPython 中运行脚本。

try:
    import IPython
    shell = IPython.get_ipython()
    shell.enable_matplotlib(gui='inline')
except:
    pass   
Run Code Online (Sandbox Code Playgroud)

这就是魔法%matplotlib inline在幕后实际做的事情。您可以将关键字参数更改gui='qt'为选择不同的后端。