ホームページ >バックエンド開発 >Python チュートリアル >オーバーレイせずに Matplotlib プロットを効率的に更新するにはどうすればよいですか?

オーバーレイせずに Matplotlib プロットを効率的に更新するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-15 10:42:15634ブラウズ

How to Efficiently Update Matplotlib Plots Without Overlaying?

Matplotlib でのプロットの更新

Matplotlib でのプロットの再描画は、特に追加のプロットを追加せずにプロットを更新する必要がある場合に、困難になることがあります。この質問では、この問題を解決する方法を検討します。

この問題は、plots() 関数が呼び出されるたびに新しいプロットを作成する Figure および FigureCanvasTkAgg の使用に起因します。これにより、複数のプロットが更新されずに重ね合わされてしまいます。

これを解決するには、2 つのオプションが利用可能です:

オプション 1: クリアして再プロット

これは最も単純なオプションですが、最も遅いオプションでもあります。新しいデータを再プロットする前に、既存のプロットをクリアする必要があります。これは、plots() 関数の先頭にgraph1.clear() とgraph2.clear() を追加することで実現できます。このアプローチは簡単ですが、計算量が多く、リアルタイムの更新には適していない可能性があります。

オプション 2: データの更新

より効率的なアプローチは次のとおりです。既存のプロット オブジェクトのデータを更新します。これには、新しいラインを作成するのではなく、プロット() 関数を変更してラインの ydata を更新する必要があります。この方法ははるかに高速ですが、データの形状と軸の制限を慎重に処理する必要があります。

例:

# Update the y-data of the existing line
line1.set_ydata(np.sin(x + phase))
# Draw the updated plot
fig.canvas.draw()
# Flush any pending events
fig.canvas.flush_events()

この方法では、クリアして再プロットすることなく、プロットを効率的に更新できます。図全体。これは、動的データのリアルタイム視覚化に特に役立ちます。

以上がオーバーレイせずに Matplotlib プロットを効率的に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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