2016-11-28 4 views
0

matplotlibで散布図をアニメーション化する簡単な方法は、プロットの作成と同様の方法ですか?コレクションを使わずにmatplotlibプロットをアニメーション化する簡単な方法

私は現在、私はプロットを作成するために、これを行うことができます知っている: scatter = ax.scatter([x values], [y values], [z values])

しかし、私はオンラインで見つけるすべての例では、多くの困難を理解した上で私を残し、そのデータを生成するのではなく3つのリストのような外部の何かするnumpyの機能を使用していますアニメーションを更新するメソッドでデータがどのように変更されるかを示します。

matplotlibにフレームごとにプロットする全く新しいデータセットを与えることはできますか? (データの各点はとにかく変更されます)

注:この状況に特別な考慮事項がある場合は、これは3Dプロットです。

答えて

1

アニメーション化する最も簡単な方法は、データとして保存されている、リストと最小(ISH)の例として、対話モードで

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 

plt.ion() 
fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
plt.show() 

for i in range(1000): 
    x =[1,2,3,4,5,6,7,8,9,10] 
    y =[5,6+i%10,2,3,13,4,1,2,4-i%10,8] 
    z =[2+(i%10)*2.,3,3,3,5,7,9+i%10,11,9+i%10,10] 

    ax.scatter(x, y, z, marker='o') 

    ax.set_xlim([0.,10.]) 
    ax.set_ylim([0.,20.]) 
    ax.set_zlim([0.,20.]) 

    plt.pause(0.01) 
    plt.cla() 

代わりリストのnumpyのアレイを使用してプロットする理由をプロットすることですこれはプロットを高速化します(xn = np.array(x)で配列に変換するのは簡単です)。ほとんどの例がさまざまなnumpy関数を使用する主な理由は、collectionオブジェクトを調整する関数を必要とするmatplotlibにアニメーションを含む自己完結型のデモンストレーションを提供するほうが簡単だからです。最小散布図アニメーションの素晴らしい例については、thisの2番目の例を参照してください。

関連する問題