2017-08-07 4 views
0
私は

matplotlibのは、異なるマーカーでオブジェクトをアニメーション

(大きさおよびその速度の方向に対応する)私は(点のような)移動粒子および線をプロットするmatplotlibのアニメーションを行う必要があり

このウェブサイトを見て、アニメーションの例がありましたか?

https://jakevdp.github.io/blog/2012/08/18/matplotlib-animation-tutorial/

は、基本的には実施例に何をすべきか特定のマーカーとのプロットとしてlineを初期化:

line, = ax.plot([], [], 'o') # for points 
line2, = ax.plot([], [], '-') # for lines 

、彼らは単にための粒子の位置を更新するset_dataを使用animate関数で次のフレーム def animate(i): line.set_data(x、y) 戻りライン、

しかし、例では、線(例:振り子の例)またはドット(ボックスの例ではパーティクル)を使用しますが、両方を使用することはありません。

パーティクルを最初にドットとしてプロットし、速度ベクトルを直線として追加するにはどうすればよいですか?

アニメーション関数はlineを返す必要があります。lineline2を使用する場合は、それらをマージする方法が必要です。

のような何か:あなたがいないだけのラインが、と(ls="")と1の間に二つの「行」、マークされたポイントから構成され1、ない行を定義することができ

答えて

0

plot(x, y, 'o')     # position 
plot([x0, x1], [y0, y1], '-') # speed 

感謝

:マーカー( marker=""

points, = ax.plot([1,2], [3,4], marker='o', ls="") # for points 
line, = ax.plot([2,1], [4,3], marker="" , ls="-") # for lines 

アニメーション関数は、両方の "行" を返します

def animate(i): 
    # x = ...; y = ... 
    line.set_data(x, y) 
    # x2 = ...; y2 = ... 
    points.set_data(x2, y2) 
    return points, line 
+0

しかし、animate関数は単一のオブジェクトを返さなければなりません。両方をどのようにマージするのですか? –

+0

さて、更新された回答に示されているように、両方を返す必要があります。 – ImportanceOfBeingErnest

+0

それは動作します、ありがとう –

関連する問題