2021-07-21

Qt for Python によるチャート (3)

Python で GUI アプリを作成するときに Qt の Python 用バインディングである PySide (Qt for Python) を使用することが多くなりました。散布図などのチャート作成には、もっぱら matplotlib を使っていますが、他の選択肢も検討しようと、QtCharts というチャート作成用ライブラリの使い方をまとめました。

当初、PySide 用の QtCharts のサンプルが見つからず、C++ 用のサンプル [1] を PySide 用に書き直していましたが、よく探してみると PySide 用サンプルもありました [2]。ここでは、勉強がてら C++ 用のサンプルを書き直したものを紹介していきます。

本記事では、下記の OS 環境を使用しています。

Fedora 34 Workstation x86_64
- Python 3.9.6
- PySide6 6.1.2 (venv)
- IDE: PyCharm 2021.1.3 (Community Edition)

BarChart(棒グラフ)

BarChart(棒グラフ)は、縦軸(あるいは横軸)にデータ量をとり、棒の高さ(長さ)でデータの大小を表現したグラフです。

qtcharts_barchart.py

実行例を下記に示しました。

qtcharts_barchart.py の実行例

基本的な作成方法は、QBarSet クラスのインスタンスに名前を付け set0 などと作成し、カテゴリ軸の各カテゴリに対応する棒(バー)の量(数値)を設定します。各カテゴリに複数の棒を表示する場合はその個数分の QBarSet のインスタンス set0, set1, ... を用意します。複数の QBarSet のインスタンスを単一の QBarSeries クラスのインスタンス series へ append メソッドで加えます。

QChart クラスのインスタンス chart を作成し、データ列のインスタンス series を addSeries メソッドで加えます。

次に、横軸 (axisX) と縦軸 (axisY) を定義します。横軸はカテゴリ軸 (QBarCategoryAxis) として、カテゴリのリストを append メソッドで定義した後、chart に軸位置 (Qt.AlignBottom) を指定して軸を定義します。これをデータ列 series に attachAxis メソッドで関連付けます。

縦軸は数値軸 (QValueAxis) としてインスタンスを生成した後、chart に軸位置 (Qt.AlignLeft) を指定して軸を定義します。これをデータ列 series に attachAxis メソッドで関連付けます。

        set0 = QBarSet('Jane')
        set1 = QBarSet('John')
        ...
        ...
        set0 << 1 << 2 << 3 << 4 << 5 << 6
        set1 << 5 << 0 << 0 << 4 << 0 << 7
        ...
        ...
        series = QBarSeries()
        series.append(set0)
        series.append(set1)
        ...
        ...
        chart = QChart()
        chart.addSeries(series)
        ...
        ...
        categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
        axisX = QBarCategoryAxis()
        axisX.append(categories)
        chart.addAxis(axisX, Qt.AlignBottom)
        series.attachAxis(axisX)

        axisY = QValueAxis()
        axisY.setRange(0, 15)
        chart.addAxis(axisY, Qt.AlignLeft)
        series.attachAxis(axisY)

参考サイト

  1. Qt Charts Examples | Qt Charts 6.1.2
  2. Qt for Python Examples — Qt for Python

 

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

0 件のコメント: