1

次のコードがあります。

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

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

mapping = defaultdict(partial(deque, maxlen=10))

私のマッピング構造には、x、y、z 値を持つキューが含まれています。キューが変更されるとプロットも変更されるように、キュー内のポイントのみをプロットしたい。どうすればいいですか?

注:キューのサイズは制限されており、プロットはキュー内の内容のみを反映する必要があるため、これは困難です。

4

1 に答える 1

2

これを行うハックな方法は次のとおりです。

ln, = ax.plot(x,y,z)
# some code that updates the x,y,z values -> new_x,new_y,new_z
ln.remove
ln, = ax.plot(new_x,new_y,new_z)
plt.draw()

これにより、古いデータの行が削除され、新しいデータの行が追加されます。

の内部構造に依存するコードを書きたい場合matplotlib(内部構造が変更される可能性が高いため、これは悪い考えです)、次の方法でこれを行うこともできます。

ln._verts3d = new_x,new_y,new_z

これを行うための機能を追加するには、ここにパッチを当てます: https://github.com/matplotlib/matplotlib/pull/1629

アニメーションモジュールは、アニメーションを実行するために必要な多くのこと (出力を ffmpeg に直接ストリーミングする方法を含む) を適切にまとめており、非常に優れたチュートリアルがあります。

Line3DドキュメントLine2Dドキュメント

于 2012-12-31T04:29:22.840 に答える