Matplotlib は、Python と NumPy のためのプロットライブラリです。Tkinter、wxPython、Qt、GTK のような汎用 GUI ツールキットを使ったアプリケーションにプロットを埋め込むためのオブジェクト指向 API を提供しています。
最近は、何かにつけて Google Gemini(以下、単に Gemini と呼びます)に相談することが多くなり、Python などのコーディングについても相談しています。便利になったものです。
リアルタイムでデータを取得してトレンドチャートにするニーズに対して、PySide6 の QChart で実装しようとして Gemini にあれこれ相談しています。
Matplotlib についても同じようなリアルタイムなトレンドチャートができるか Gemini に聞いてみたところ、あっさりサンプルを示してくれました。確認したところ、厳密にはデータ追加の度に再描画をしているとのことですが、それでもこのやり方を探していたんだと(Matplotlib でリアルタイムにデータ点を追加することに苦戦していただけに)自分の調査力の拙さにがっかりしてしまいました。
Gemini が出してくれたコードは、本ブログ記事の下の方 qt_matplotlib_rt.py に示しました。
Matplotlib でもできるのであれば、現在 PySide6 の QChart で実装しようとしているトレンドチャートを Matplotlib でやり直そうか…。結構な量のデータをリアルタイムで扱うことから、リソース消費やパフォーマンスを追求する必要があったので、Gemini に頼んで比較してもらいました。
以下が Gemini が出力してくれた「まとめ」の表に色など少し修飾を加えたものです。
特徴 | PySide6 QChart | 埋め込んだ Matplotlib |
---|---|---|
処理速度 | 高速 (リアルタイムデータ更新に最適化) | 比較的低速 (再描画のオーバーヘッド) |
リソース効率 | 有利 (軽量、メモリ使用量少) | 不利 (多機能、メモリ使用量多) |
リアルタイム性 | 高い | 比較的低い |
汎用性 | グラフの種類は Matplotlib より限定的 | 非常に高い (多様なグラフに対応) |
カスタマイズ性 | ある程度可能 | 非常に高い (細部までカスタマイズ可能) |
統合性 | Qt アプリケーションとの親和性が高い | 外部ライブラリの埋め込み |
Jupyter Lab 上でのチャートは Matplotlib が便利で、多少リソースを食うからと言っても変える気はありませんが、GUI アプリの特定用途向けのチャートでは GUI ライブラリの機能(この場合は QChart)を使った方が良さそうです。
参考サイト

にほんブログ村
#オープンソース

