2015-10-10 22 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'以選擇不同的後端。