iPython + pylab / matplotlib动画挂起

时间:2013-10-19 13:56:31

标签: python animation matplotlib ipython

我不能为我的生活让iPython显示一个动画情节。此代码直接取自matplotlib动画示例,使用普通的旧python(aka python animate.py)可以正常工作。

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和matplotlib 1.3

2 个答案:

答案 0 :(得分:1)

上述内容 - 没有取消注释任何可以正常工作:

ipython animate.py

也是如此

ipython --pylab=auto

In [1]: import animate

所以我认为你的问题是你正在尝试将后端选择很重要的交互模式与一个没有交互的连续运行的脚本结合起来 - 这是冲突。

阅读文档herehere我怀疑您需要拨打IPython.lib.inputhook.InputHookManager animate.py来设置后端。

IPython 0.13.2 matplotlib' 1.3.0' kubuntu 13.10

答案 1 :(得分:0)

我也一直在尝试这个。似乎大多数用户使用Jake Vanderplaas的JSAnimation。链接。 https://github.com/jakevdp/JSAnimation。然而,这不是Enthought发行版中的包,而是需要单独导入。