2015-10-10 78 views
0

我想能够内嵌显示matplotlib图表或使用基于被称为inlinemode可变的脚本文件QT后端之间切换诸如低于Python脚本matplotlib inline和QT后端之间切换

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魔术%matplotlib内嵌 - 或 - %matplotlib qt,则可以完成此任务。但是,从我已经能够收集的信息中,不可能从脚本文件中发送这些魔法。

任何建议将不胜感激!

(FYI:我从Spyder在蟒蛇的Python 2.7在Windows 10上运行)

+0

使用'%matplotlib qt'魔法 – tacaswell

+0

如果我使用%运行foo.py.从IPython的控制台执行脚本神品但是,如果我使用Spyder的运行按钮,它会将runfile('foo.py')发送到IPython控制台。在这种情况下,它会在%matplotlib qt语句中出现语法错误。 – gaphys

回答

3

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

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

这就是神奇的%matplotlib inline实际上是在引擎盖下做的。您可以将关键字参数更改为gui='qt'以选择不同的后端。