[解決済み】matplotlibを使ってwhileループでリアルタイムにプロットするにはどうしたらいいですか?
2022-03-29 01:03:46
質問
OpenCVを使ってカメラからのデータをリアルタイムでプロットしようとしています。しかし、リアルタイムのプロット(matplotlibを使用)がうまくいかないようです。
この簡単な例で問題を分離してみました。
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()
この例では、1000点を個別にプロットすることを期待します。実際に起こることは、最初の点が表示されたウィンドウがポップアップし(それでOK)、ループが終了するのを待ってから残りのグラフを表示するというものです。
なぜ一度に1つのポイントが表示されないのか、何か思い当たることはありますか?
解決方法は?
以下は問題のコードの作業バージョンです(少なくとも2011-11-14からのバージョンMatplotlib 1.1.0が必要です)。
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)
これは新しいデータを描画し、GUIのイベントループを実行します(マウスの操作が可能です)。
関連
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Matplotlibでプロットを表示するのではなく、画像ファイルに保存する。
-
[解決済み] Matplotlib で凡例をプロットの外側に配置する方法
-
[解決済み] Do-whileループをエミュレートする方法は?
-
[解決済み] IPythonノートブックmatplotlibプロットをインラインで行う方法
-
[解決済み】Matplotlibで図のタイトルと軸ラベルのフォントサイズを設定するには?
-
[解決済み] matplotlib のプロットでフォントサイズを変更する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python call matlab メソッドの詳細
-
python string splicing.join()とsplitting.split()の説明
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
PythonによるExcelファイルの一括操作の説明
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み] matplotlib でプロットを更新する方法
-
[解決済み] Matplotlibでノンブロッキングにプロットする