2013-10-19 104 views
1

我不能爲我的生活得到iPython顯示一個動畫的情節。此代碼直接從matplotlib動畫示例中獲取,並且使用普通的舊python(又名python animate.py)可以正常工作。iPython + pylab/matplotlib動畫掛

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 

fig, ax = plt.subplots() 
line, = ax.plot(np.random.rand(10)) 
ax.set_ylim(0, 1) 

def update(data): 
    line.set_ydata(data) 
    return line, 

def data_gen(): 
    while True: yield np.random.rand(10) 

ani = animation.FuncAnimation(fig, update, data_gen, interval=100) 

#plt.ion() 
plt.show() 

#while 1: 
    #plt.draw() 

ipython --pylab auto animate.py打電話,ipython --pylab tk animate.py都導致窗口立即消失。如果我取消註釋ion()plt.draw()它只畫一個框架,然後掛起。我需要使用iPython,因爲它比普通的matplotlib實現更加線程安全。

我在做什麼錯?在OSX 10.8使用python2.7.2與IPython的1.1和1.3 matplotlib

回答

1

以上 - 無需在取消幹啥,正常工作與剛:

ipython animate.py 

因此,沒有

ipython --pylab=auto 

In [1]: import animate 

所以我覺得你的問題是你試圖將後臺選擇很重要的交互模式和一個連續不間斷運行的腳本結合起來 - 這是一個衝突。

閱讀文檔herehere我懷疑你需要撥打IPython.lib.inputhook.InputHookManageranimate.py來設置你的後端。

IPython的0.13.2 matplotlib '1.3.0' 的Kubuntu 13.10

+0

您好Steve,如果您不使用-pylab開關,那麼它不會激活我感興趣使用的ipython後端(反正afaik) – jeremy

0

我也一直在努力這一點。似乎大多數用戶使用Jake Vanderplaas的JSAnimation。鏈接。 https://github.com/jakevdp/JSAnimation。然而,這不是Enthought發行版中的一個包,因此需要單獨導入。