我正在尝试从终端启动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.2
和matplotlib 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()