完全な再描画を行わずに Matplotlib でプロットを動的に更新する
シリアル ポートからデータを収集してプロットする場合、一般的な更新に関連して非効率が発生します方法。プロット全体をクリアして再描画したり、時間指定されたアニメーションを使用したりすることは、非現実的であるか、遅延が発生する可能性があります。この記事では、新しいデータを受信した場合にのみ増分プロット更新を可能にする代替アプローチを紹介します。
増分プロット更新
Matplotlib は、 FuncAnimation関数。この機能を使用すると、特定の機能を時間の経過とともにアニメーション化できます。この例では、この関数を使用してデータ取得プロセスをアニメーション化できます。
更新関数の実装
アニメーション方法には、プロットされたオブジェクト。画面や図をクリアする代わりに、既存のデータ ポイントに新しいデータ ポイントを追加することでデータ プロパティを拡張するだけです。これを行う関数の例を次に示します。
import matplotlib.pyplot as plt import numpy hl, = plt.plot([], []) def update_line(hl, new_data): hl.set_xdata(numpy.append(hl.get_xdata(), new_data)) hl.set_ydata(numpy.append(hl.get_ydata(), new_data)) plt.draw()
シリアル ポートから新しいデータが到着したら、新しいデータを使用して update_line 関数を呼び出すだけです。これにより、図全体を再描画するオーバーヘッドを発生させることなく、プロットが段階的に更新されます。
以上が完全な再描画を行わずに Matplotlib プロットを動的に更新する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。