ホームページ >バックエンド開発 >Python チュートリアル >完全な再描画を行わずに Matplotlib プロットを動的に更新する方法

完全な再描画を行わずに Matplotlib プロットを動的に更新する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-13 16:39:02431ブラウズ

How to Dynamically Update Matplotlib Plots without Complete Redraws?

完全な再描画を行わずに 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。