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

fig = plt.figure()
ax = fig.add_subplot(111)

x = np.arange(0, 2*np.pi, 0.01)        # x-array
i=1
line, = ax.plot(x, np.sin(x))

def animate():
    i= i+2
    x=x[1:] + [i]
    line.set_ydata(np.sin(x))  # update the data
    return line,

#Init only required for blitting to give a clean slate.
def init():
    line.set_ydata(np.ma.array(x, mask=True))
    return line,

ani = animation.FuncAnimation(fig, animate, init_func=init,
    interval=25, blit=True)
plt.show()

私はこのようなエラーを受け取ります:animate()は引数を取りません(1が与えられました)..とても混乱しています。コールバック関数に引数を指定することすらしません。見逃したことはありましたか?

ありがとう。

4

1 に答える 1

6

ドキュメントがオフになっているか、少なくともここでは不明確なようです。関数には、固有の最初の引数であるフレーム番号があります。def animate(*args)したがって、単純にまたはdef animate(framenumber, *args)、またはとして定義できますdef animate(framenumber, *args, **kwargs)

この例も参照してください。

その後、他の問題が発生することに注意してください。

  • ixanimateで宣言する必要がありますglobalfargsまたは、のキーワードを介して引数としてそれらを渡すことをお勧めしFuncAnimationます。

  • x = x[1:] + [i]あなたが思っているようには機能しません。Numpy配列は、リストとは動作が異なります。[i]のすべての要素に追加されx[1:]、に割り当てられるためxx1つの要素が短くなります。考えられる正しい方法の1つはですx[:-1] = x[1:]; x[-1] = i

于 2012-11-30T10:02:11.230 に答える