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.2 (Community Edition) | ||
BoxWhiskerChart(箱ひげ図)
箱ひげ図(はこひげず、英:box-and-whisker plot)は、データのばらつきをわかりやすく表現するための統計図です。主に多くの水準からなる分布を視覚的に要約し、比較するために用います。箱(box)と、その両側に出たひげ(whisker)で表現されることからこの名があります。
Wikipedia より引用、編集
qtcharts_boxwhiskerchart.py
本サンプルでは、下記の二つのテキストファイルをプロットするデータとして読み込んでいます。
実行例を下記に示しました。
qtcharts_boxwhiskerchart.py の実行例
ファイルを読み込んで、データ列 series への追加は、下記のスタティックメソッドで処理しています。
def box_data_reader(name_file: str, name_series: str) -> QBoxPlotSeries:
    series = QBoxPlotSeries()
    series.setName(name_series)
    with open(name_file) as f:
        for line in f:
            values = line.strip().split()
            if len(values) == 0:
                continue
            if values[0] == '#':
                continue
            boxset = QBoxSet(values[0])
            for i in range(1, len(values)):
                boxset.append(float(values[i]))
            series.append(boxset)
    return series
データ列には QBoxPlotSeries クラス、ボックスプロット用のデータセット作成には QBoxSet クラスのインスタンスを使います。
参考サイト
にほんブログ村




0 件のコメント:
コメントを投稿