PyQtGraphによるグラフ描画を詳しく解説【Python】

PyQtGraphによるグラフ描画を詳しく解説【Python】 プログラミング

Pythonでグラフ作成と言えば、Matplotlibが有名です。
では、PyQtGraphがなぜ必要となるのでしょうか?

それは、PyQtGraphの処理速度に答えがあります。
簡単に言うと、PyQtGraphはMatplotlibよりも処理が速いのです。

よって、高速なグラフ描画にはPyQtGraphが必要になります。

本記事の内容

  • PyQtGraphとは?
  • PyQtGraphのシステム要件
  • PyQtGraphのインストール
  • PyQtGraphの動作確認

それでは、上記に沿って解説していきます。

PyQtGraphとは?

PyQtGraphが、Matplotlibよりも高速だと書きました。
では、なぜ高速なのでしょうか?

それは、Qtに秘密があります。
PyQtGraphの名前の中にも「Qt」とありますよね。

ここで念のため、Qtについても説明しておきます。
Qtとは、C++のクロスプラットフォームフレームワークのことを言います。
C++がベースになっているため、処理が高速です。

また、PyQtGraphは数値計算をNumpyに依存しています。
これもPyQtGraphが高速である理由のようです。

以上、PyQtGraphについての説明でした。
PyQtGraphはQtベースであるから、処理が速いと覚えておけば十分でしょう。

次に、PyQtGraphが動作する環境について確認します。

PyQtGraphのシステム要件

最初に公式サイトに関しての注意喚起です。

PyQtGraph公式サイト
http://www.pyqtgraph.org/

上記が公式サイトです。
しかし、公式サイトは更新されていません。
SSL未対応の状況から、そういうことなのでしょう。

そのため、GitHub上のページを参考にします。
https://github.com/pyqtgraph/pyqtgraph

現時点での最新バージョンは、0.11.1となります。
このバージョンは、2021年12月20日に公開されています。

PyQtGraphは、クロスプラットフォーム対応です。
そのため、基本的には以下のOSのどこでも動きます。

  • Windows
  • macOS
  • Linux

ただ、依存関係について注意が必要です。
以下が、必須となります。

  • Python 3.7+
  • Qt 5.12-6.0
  • PyQt5, PyQt6, PySide2 or PySide6
  • numpy 1.17+

オプションに関しては、適宜必要な都度対応すればいいでしょう。
上記の必須だけでも下記で説明します。

Python 3.7+

Pythonのバージョンを新しくしましょう。
それしか言うことはありません。

今回は、以下のバージョンで試していきます。

>python -V
Python 3.8.6

Qt 5.12-6.0

Qtは、インストール済み前提です。
基本的に、Qt 5系のはず。
Qt6をわざわざ自分でインストールしていない限りは。

Qt6は、2020年12月に公開されています。
https://www.qt.io/jp/blog/qt-6.0-released

Linuxなら、そもそもQtが未インストールかもしれません。

PyQt5, PyQt6, PySide2 or PySide6

これらは、QtのPythonバインディングと表現できます。
そして、以下のどれか一つだけでもインストールされていれば、OKです。

  • PyQt5
  • PyQt6
  • PySide2
  • PySide6

ただし、注意点があります。
Pythonのバージョンと、それぞれの動作確認の結果表をご覧ください。

上記の表を満たす環境を用意する必要があります。

今回は、Python 3.8であるのでPyQt5-5.15をインストールします。
PyQt5のインストールに関しては、次の記事を参考にしてください。

numpy 1.17+

インストール済みなら、特になにもしなくてもよいでしょう。
Numpyを未インストールなら、ここで何もする必要はありません。

PyQtGraphのインストール時に、最新のNumpyが自動的にインストールされます。

まとめ

PyQtGraphのシステム要件でのポイントは、主に2点です。

  • Python 3.7以降
  • Pythonのバージョンに対応したQtのPythonバインディング

上記の2点が準備できたら、PyQtGraphのインストールを行っていきます。

PyQtGraphのインストール

最初に、現状のインストール済みパッケージを確認しておきます。
PyQt5のみをインストールした状況です。

>pip list
Package    Version
---------- -------
pip        21.0.1
PyQt5      5.15.2
PyQt5-sip  12.8.1
setuptools 53.0.0

次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip

では、PyQtGraphのインストールです。
PyQtGraphのインストールは、以下のコマンドとなります。

pip install pyqtgraph

インストールは、すぐに終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。

>pip list
Package    Version
---------- -------
numpy      1.20.1
pip        21.0.1
PyQt5      5.15.2
PyQt5-sip  12.8.1
pyqtgraph  0.11.1
setuptools 53.0.0

インストール前と比較すると、以下の二つが追加されています。

numpy      1.20.1
pyqtgraph  0.11.1

PyQtGraphは、最新バージョンがインストールされていますね。
なお、Numpyに関しては、事前にインストール済みでも問題はありません。

最後に、PyQtGraphの動作確認を行いましょう。

PyQtGraphの動作確認

PyQtGraphが正常に動作するかどうかは、以下のコードで試せます。

import pyqtgraph.examples
pyqtgraph.examples.run()

上記を実行すると、以下の画面が表示されます。

上の画面が確認できれば、PyQtGraphの動作確認は完了と言えます。
でも、折角なのでグラフを表示(保存)するコードも載せておきます。

import pyqtgraph as pg
import pyqtgraph.exporters

# generate something to export
plt = pg.plot([1,5,2,4,3])

# create an exporter instance, as an argument give it
# the item you wish to export
exporter = pg.exporters.ImageExporter(plt.plotItem)

# set export parameters if needed
exporter.parameters()['width'] = 100   # (note this also affects height parameter)

# save to file
exporter.export('fileName.png')

上記を実行すると、以下の画像ファイルが作成されます。

なんてことはないグラフです。
そのため、PyQtGraphの効果を確認するまではできません。

ただ、PyQtGraphを利用してグラフを描画するまでは確認できました。
これで、グラフ作成の際に選択肢が増えました。

PyQtGraphとMatplotlibのどちらかを選ぶことができます。

タイトルとURLをコピーしました