从脚本启动且动画是可调用对象时,FuncAnimation不起作用

时间:2019-01-27 16:48:01

标签: python python-3.x matplotlib

我正在尝试从终端启动python脚本,从而启动随机噪声的动画。问题是,如果我使用python3.5 animate.py作为脚本启动它,那么我会得到一个仅包含轴和菜单的静态窗口。 python3.5 animate.py做同样的事情。但是,如果我以交互模式编写动画,那么突然所有的事情都会按预期工作,从而生成动画。

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

class Animation:
    def __init__(self, ax):
        self.ax = ax

    def __call__(self, i):
        xs = np.linspace(0, 20, 100)
        ys = np.random.rand(100)
        self.ax.clear()
        self.ax.plot(xs, ys)

当以下几行作为脚本的一部分运行时,它会生成静态图片,如果将其复制粘贴到解释器中,则它将正常工作,并启动动画。

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
FuncAnimation(fig, Animation(ax), interval=10)
plt.show()

我正在使用python3.5.2matplotlib 3.0.2。我通过matplotlib 2.0.0获得了相同的结果。

有趣的部分 在这两种情况下,下面的方法均有效,因此似乎动画具有可调用对象的问题:

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

fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)

def animate(i):
    xs = np.linspace(0, 20, 100)
    ys = np.random.rand(100)
    ax1.clear()
    ax1.plot(xs, ys)

ani = FuncAnimation(fig, animate, interval=1000)
plt.show()

0 个答案:

没有答案