2022-04-09

【備忘録】PySide6 と Matplotlib

PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。配布ライセンスは LGPL で公開されています。

Matplotlib は Python およびその科学計算用ライブラリ NumPy のためのグラフ描画ライブラリです。Jupyter Notebook 上で利用できるばかりでなく、PySide6 / PyQt6 のような GUI ツールキットでも利用できるので、大変重宝しています。

Python と組み合わせる GUI ツールキットは、最近もっぱら PySide6 を利用していますが、場当たり的に Matplotlib でプロットを作成するので収集がつかなくなり、Matplotlib で描画するプロットもクラスで管理すべきと思うようになりました。

さてどうするか。

Figure (matplotlib.figure) を継承するか、FigureCanvas (matplotlib.backends.backend_qtagg,FigureCanvasQTAgg) にするか、それともそれぞれ継承したクラスを作るべきか…。

あれこれ考えた結果、FigureCanvas を継承したクラスを用意してプロットを管理することにしました。

簡単なサンプルを用意したつもりですが、なんだか冗長なように見えるかもしれません。しかし、いくつも同じようなプロットを作成するアプリの場合には管理がシンプルになります。

下記の OS 環境で動作確認をしました。

Fedora Linux 36 beta x86_64
Python 3.10.4
PySide6 6.2.4
matplotlib 3.5.1
qt_matplotlib_scatter.py

このサンプルの実行例を以下に示しました。

qt_matplotlib_scatter.py の実行例
( 0.60,  0.09) --> ( 0.97,  0.75)

参考サイト

  1. Matplotlib - Rectangle Selector - GeeksforGeeks

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加

0 件のコメント: