2017-11-25 14 views
-1

私はPythonで2番目の次元を無作為にコーディングしています。私はそれが "成長"する方法をアニメーション化したいと思います。私はmatplotlibからanimation.FuncAnimationを使いたかったのですが、残念ながらそれはうまくいきません。しかし、エラーはありません。私は%matplotlib tkをiPythonコンソールに使用しました。
マイコード:エラーはありませんが、動作しないアニメーション[Python]

def random_walk_animated_2D(n, how_many = 1): 

    possible_jumps = np.array([[0, 1], [1, 0], [-1, 0], [0, -1]]) 
    where_to_go = np.random.randint(4, size = n) 
    temp = possible_jumps[where_to_go, :] 
    x = np.array([[0, 0]]) 
    temp1 = np.concatenate((x, temp), axis = 0) 
    trajectory = np.cumsum(temp1, axis = 0) 

    fig = plt.figure() 
    ax = plt.axes(xlim = (np.amin(trajectory, axis = 0)[0], np.amax(trajectory, axis = 0)[0]), 
        ylim = (np.amin(trajectory, axis = 0)[1], np.amax(trajectory, axis = 0)[1])) 
    line, = ax.plot([], [], lw = 2) 

    def init(): 
     line.set_data([], []) 
     return line, 

    def animate(i): 
     line.set_data(trajectory[i, 0], trajectory[i, 1]) 
     return line, 

    anim = animation.FuncAnimation(fig, animate, init_func = init, 
            frames = 200, interval = 30, blit = True) 
    plt.show() 

残念ながら何もその機能を実行した後に起こりません。 Screenshot of the plot

後で、プロット内に複数のランダムウォークを生成する可能性を追加したいと思います(私はそれらを同時に生成したいと思います)。どうしたらいいですか?

答えて

0

単一点で線を描くことは不可能です。
ラインプロットをプロットする場合は、plotまたはラインのset_dataメソッドへの引数に少なくとも2つのポイントが必要です。

代わりのline.set_data(trajectory[i, 0], trajectory[i, 1])あなたはおそらくi番目のポイントまでのすべての点を通る線をプロットする

line.set_data(trajectory[:i, 0], trajectory[:i, 1]) 

をしたいです。

+0

残念ながらまだ何もありません:( – Hendrra

+0

コード自体を修正した場合、アニメーションが表示されない場合は、アニメーションへの参照が緩和されているためにアニメーションが返されます。 'plt.show()'が必要です。 – ImportanceOfBeingErnest

関連する問題