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 サイトの他の関連記事を参照してください。