ホームページ >バックエンド開発 >Python チュートリアル >Matplotlib の While ループ内でデータのリアルタイム プロットを実現するにはどうすればよいですか?

Matplotlib の While ループ内でデータのリアルタイム プロットを実現するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-15 12:10:11401ブラウズ

How Can I Achieve Real-Time Plotting of Data Within a While Loop in Matplotlib?

while ループ内のリアルタイム プロット

ビデオ ソースからのデータをリアルタイムで表示しようとすると、ユーザーは多くの場合、次のような問題に遭遇します。 while ループ内でプロットを更新します。典型的な問題の 1 つは、ループが完了するまでプロットが静的なままであることです。この問題は、動的データの表示に使用されるメソッドに起因します。

提供されたコード スニペット内:

while i < 1000:
    temp_y = np.random.random()
    x.append(i)
    y.append(temp_y)
    plt.scatter(i, temp_y)
    i += 1
    plt.show()

ループはデータ ポイントを追加し、単一のポイントをプロットしてから、plt.show を呼び出します。 ()。ただし、plt.show() は GUI をブロックし、ウィンドウが手動で閉じられるまで他のコードの実行を妨げるため、更新が遅れます。

リアルタイムのプロットを実現するには、plt.pause() を使用する必要があります。 。以下は改訂版です:

import numpy as np
import matplotlib.pyplot as plt

plt.axis([0, 10, 0, 1])

for i in range(10):
    y = np.random.random()
    plt.scatter(i, y)
    plt.pause(0.05)

plt.show()

主な変更点は、各点をプロットした後に plt.pause(0.05) を追加したことです。 plt.pause() は、更新されたデータを描画し、GUI のイベント ループを実行します。引数 0.05 は 50 ミリ秒の遅延を指定し、GUI にポイントを表示してユーザー インタラクション (ウィンドウを閉じるなど) を処理する時間を与えます。

この変更されたコードにより、プロットがリアルタイムでスムーズに更新されるようになります。ユーザーがデータを動的に視覚化できるようにします。

以上がMatplotlib の While ループ内でデータのリアルタイム プロットを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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