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 运行)
使用以下块可以实现这一点,这将允许使用%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'为选择不同的后端。