[解決済み] matplotlib でプロットを動的に更新する
質問
Pythonで、シリアルポートからデータを収集し、収集したデータの到着時間に対するグラフをプロットするアプリケーションを作っています。データの到着時刻は不確定です。データを受信したらグラフを更新するようにしたいのですが、どうすればよいでしょうか。これを行う方法について検索したところ、2つの方法を見つけました。
- プロットをクリアして、もう一度すべての点でプロットを再描画する。
- 特定の間隔の後にプロットを変更することによってアニメートする。
プログラムが長時間(例えば1日)動作してデータを収集し、プロットを再描画するとかなり時間がかかるので、最初のものは好ましくありません。 2つ目の方法も、データの到着時刻が不確かで、データが受信されたときだけプロットを更新したいので、好ましくありません。
データを受信したときだけ、点を追加するだけでプロットを更新できるような方法はないでしょうか?
どのように解決するのですか?
点を追加するだけでプロットを更新できるような方法はありますか?
matplotlibでデータをアニメーション化する方法は、バージョンによっていくつもあります。あなたは matplotlib クックブック の例を見ましたか?また、より現代的な アニメーションの例 を matplotlib のドキュメントで見てみてください。最後に アニメーション API は関数を定義しています。 FuncAnimation を定義しています。この関数は、データを取得するために使用する関数である可能性があります。
各メソッドは基本的に
data
プロパティを設定するので、画面や図をクリアする必要はありません。そのため
data
プロパティは単純に拡張することができるので、前のポイントを維持したまま、線(または画像、あるいはあなたが描いているもの)に追加し続けることができます。
データの到着時間が不明であることを考えると、最善の方法は次のようなことを行うことでしょう。
import matplotlib.pyplot as plt
import numpy
hl, = plt.plot([], [])
def update_line(hl, new_data):
hl.set_xdata(numpy.append(hl.get_xdata(), new_data))
hl.set_ydata(numpy.append(hl.get_ydata(), new_data))
plt.draw()
そして、シリアルポートからデータを受信するときは、単に
update_line
.
関連
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み] matplotlib でプロットをクリアするために cla()、clf() または close() をいつ使うか?
-
[解決済み] Matplotlibでプロットを表示するのではなく、画像ファイルに保存する。
-
[解決済み] Matplotlib で凡例をプロットの外側に配置する方法
-
[解決済み] IPythonノートブックmatplotlibプロットをインラインで行う方法
-
[解決済み】Matplotlibで図のタイトルと軸ラベルのフォントサイズを設定するには?
-
[解決済み] matplotlib のプロットでフォントサイズを変更する方法
-
[解決済み】matplotlibで2つのヒストグラムを1つのグラフにプロットする
最新
-
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 人工知能 人間学習 描画 機械学習モデル作成
-
PicgoのイメージベッドツールをPythonで実装する
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み] matplotlib でプロットを更新する方法
-
[解決済み】matplotlibを使ってwhileループでリアルタイムにプロットするにはどうしたらいいですか?