2013-10-22 42 views
3

我在IPython中運行IPython QT控制檯在Linux上有以下代碼。IPython繪製內聯不顯示

%pylab inline 

Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline]. 
For more information, type 'help(pylab)'. 

fig = figure() 

ax = fig.add_axes() 

ax = fig.add_axes([0,500, 0, 5000]) 

ax.plot([1,2,3,44], [4,4,55,55]) 
Out[5]: [<matplotlib.lines.Line2D at 0x3d8e7d0>] 

fig 
Out[6]: <matplotlib.figure.Figure at 0x3d25fd0> 

fig.show() 
/usr/lib/pymodules/python2.7/matplotlib/figure.py:362: UserWarning: matplotlib is currently using a non-GUI backend, so cannot show the figure 
    "matplotlib is currently using a non-GUI backend, " 

我一直在努力使這項工作了一段時間,我試着matplotlib.use()手動更改後端Qt4AggGTK等沒有運氣。即使我撥打display(),也會發生在IPython notebook之間。

任何想法如何讓內聯繪圖工作?


標記Jakob的答案是答案,但兩者都是真實的。我必須用新副本替換matploblibrc文件,使用--pylab = None啓動IPython QT Console,然後在控制檯中手動輸入%pylab內聯。不知怎的,這解決了這個問題。

+0

如果你不是一個專家,並害怕從源代碼構建,你可以嘗試從軟件存儲庫進行安裝,即apt-get,yum等 – rafee

回答

4

軸對象定義不正確,這可以防止matplotlib渲染。
刪除第一個ax = fig.add_axes(),並將第二行替換爲
ax = fig.add_axes([0, 0, 1, 1])

的add_axes方法請求軸的尺寸在相對座標,在形式左邊,底部,寬度,高度與 0和1之間的值,例如參見matplotlib tutorial

您也可以嘗試fig.add_subplot(111)而不是fig.add_axes()fig,ax = subplots()來創建圖形和軸對象。後者假定您已經在IPython中調用了交互式命名空間matplotlib(%pylab)調用。

1

它看起來像你的matplotlib構建編譯沒有GUI後端。

時或者a)它是明確指定(爲方便網絡服務器)這樣做,或者b)對於至少一個GUI後端所需的庫中不存在(例如,沒有TkGtkQt等)。

你是怎麼安裝matplotlib的?

如果你從源代碼編譯它,確保你有至少安裝了Tk的開發庫,並且你的python安裝是使用Tk支持編譯的(默認情況下)。如果您從發行版的軟件倉庫安裝它,那麼構建軟件包的用戶無需gui支持即可構建它,並且您需要從其他源安裝它。

+0

我有Spyder(使用Anaconda)。我怎樣才能將劇情作爲一個窗口? – Royi