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

时间:2015-10-10 12:30:02

标签: python qt matplotlib backend

我希望能够在内联显示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))

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

任何建议都将不胜感激!

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

1 个答案:

答案 0 :(得分:3)

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

try:
    import IPython
    shell = IPython.get_ipython()
    shell.enable_matplotlib(gui='inline')
except:
    pass   

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