開発者は、データ駆動型アプリケーションの一部としてデータをリアルタイムにプロットするという課題に頻繁に遭遇します。ただし、「while」ループ内でリアルタイム プロットを実装しようとすると、一般的な問題が発生します。
OpenCV を使用してランダムなデータ ポイントをリアルタイムでプロットすることを目的とした次の例を考えてみましょう。
fig = plt.figure() plt.axis([0, 1000, 0, 1]) i = 0 x = list() y = list() 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.pause(0.05) 関数を呼び出すことにあります。この関数は、プロットを最新のデータで更新するだけでなく、GUI のイベント ループも実行します。これにより、ユーザーの対話が可能になり、ループの実行中にプロットの応答性と対話性が確保されます。
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) を組み込むことで、データ ポイントを実際にプロットする機能がロック解除されます。これにより、データがストリーミングされるときに視覚化できるようになります。
以上がPython の While ループ内でリアルタイム プロットを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。