ポイント移動のアニメーション中にスキャッターで「三角形マーカー」の方向を変更すると問題が発生します。 だから私はエリア上でランダムに動いている100のポイントを持っていて、毎回の反復でそれらは移動の方向を変えることができます(すべてのポイントは別のものとは別に/それらは独立しています)。私はすべての反復のすべての点のピクル位置からそれらの方向を読み取り、それをプロットしたいと思います。 10移動ポイントごとに、ランダムに移動している別の世代のポイントによって変更されます。私のコードはちょっと動作しますが、そうではありません。すべてのポイントの方向は、すべての世代の開始時に設定されますが、すべての反復後に変化しません。誰かがそれを変更するのを手伝ってくれませんか? ;)
def update(i, data, agent, texts, NUMBER_OF_POINTS):
x_N, y_N = [], []
x_S, y_S = [], []
x_W, y_W = [], []
x_E, y_E = [], []
for point, coordinate in IT.islice(data, NUMBER_OF_POINTS):
if point in range(100):
if coordinate[1] == Direction.N:
texti = texts[point]
x, y = coordinate[0].cpu().numpy()
x_N.append(x)
y_N.append(y)
texti.set_position((x, y))
agent_N.set_offsets(np.column_stack([x_N, y_N]))
agent_N.set_paths([MarkerStyle("^").get_path().transformed(MarkerStyle("^").get_transform())])
elif coordinate[1] == Direction.S:
texti = texts[point]
x, y = coordinate[0].cpu().numpy()
x_S.append(x)
y_S.append(y)
texti.set_position((x, y))
agent_S.set_offsets(np.column_stack([x_S, y_S]))
agent_S.set_paths([MarkerStyle("v").get_path().transformed(MarkerStyle("v").get_transform())])
elif coordinate[1] == Direction.W:
texti = texts[point]
x, y = coordinate[0].cpu().numpy()
x_W.append(x)
y_W.append(y)
texti.set_position((x, y))
agent_W.set_offsets(np.column_stack([x_W, y_W]))
agent_W.set_paths([MarkerStyle("<").get_path().transformed(MarkerStyle("<").get_transform())])
else:
texti = texts[point]
x, y = coordinate[0].cpu().numpy()
x_E.append(x)
y_E.append(y)
texti.set_position((x, y))
agent_E.set_offsets(np.column_stack([x_E, y_E]))
return [agent_N, agent_S, agent_W, agent_E] + texts
if __name__ == "__main__":
matplotlib.animation.Animation._blit_draw = _blit_draw
num_frames = NUMBER_OF_GENERATIONS*SINGLE_LIFETIME
fig, ax = plt.subplots()
agent_N = ax.scatter([0] * NUMBER_OF_POINTS, [0] * NUMBER_OF_POINTS, c="lightblue", s=100)
agent_S = ax.scatter([0] * NUMBER_OF_POINTS, [0] * NUMBER_OF_POINTS, c="lightblue", s=100)
agent_E = ax.scatter([0] * NUMBER_OF_POINTS, [0] * NUMBER_OF_POINTS, c="lightblue", s=100)
agent_W = ax.scatter([0] * NUMBER_OF_POINTS, [0] * NUMBER_OF_POINTS, c="lightblue", s=100)
texts = []
for i in range(NUMBER_OF_AGENTS):
t = ax.text(0, 0, str(i), fontsize=10, animated=True)
texts.append(t)
path = "output.txt"
data = get_data(path)
ani = FuncAnimation(fig, update, range(1, num_frames + 1), init_func=init, blit=True, fargs=(data, agent_N, agent_S, agent_W, agent_E, mushroom, toadstool, texts, title, NUMBER_OF_POINTS), interval=1000, repeat=False,)
plt.grid(True)
plt.show()
回答 1 件
関連記事
- 静的メンバー関数で使用する場合のstd - : functionに関する質問
- スプレッドシートとシートに関する初心者の質問
- 私はdjangoで条件付きのデータとHTML要素を表示することについて質問があります
- ハイチャート:散布図のY軸の値の範囲に基づいてマーカーの半径を増やす方法は?
- JSの再帰の例に関する初心者の質問
- Python辞書のキーと値のペアへのアクセスに関する質問
- Pythonのforループifステートメントと複数のforループについて質問があります
- Perlモジュール用のCentOSRPMのバンドルに関する質問
- Pythonの「無限」セットクラスに関する質問(宿題)
- Cでのmemmoveの実装に関する質問
関連した質問
- matplotとpythonを使用してデータベースからヒストグラムをプロットする
- 海のカウントプロットで各色にラベルを付ける
- x軸の目盛りをmatplotlibヒストグラムの対応するバーに揃えることは可能ですか?
- matplotlibでの\ mathbb {}の使用
- matplotlibのカラーバーのラベルパディングを増やす方法
- 対応する辞書値に対してPython辞書キーをプロットするにはどうすればよいですか?
- 比較のために2つのデータセットから値をプロットする
- pltion()を使用してmatplotlibアニメーションに制限を設定する
- matplotlibコンタープロットを埋める
- Pythonでクラスター重心なしでクラスターを非表示にするにはどうすればよいですか?
私のコメントの要点は、私たちができないときにあなたのコードの何が悪いのかをあなたに伝えることはほとんど不可能になるだろうということです走る あなたのコード。
いずれにせよ、移動方向に応じてマーカーが変化する簡単なアニメーションを次に示します。これは何かを理解するのに役立つでしょう。そうでない場合は、実際のMVCEの提供を検討してください