【WPF】ScottPlot Ver 4.1 で楽々グラフ描画!旧Verとの違いも合わせて解説!

プログラミングTips
この記事は約6分で読めます。

個人的にはWPF用のグラフ作成ライブラリとして一押しのScottPlotですが、最近Pythonの記事に集中していたせいで、ScottPlot のバージョンアップをフォローしきれていませんでした。

以前のデモプログラムに最新版のScotPlot Nuget でインストールしたところ、結構仕様が変わっていて修正が必要でした。

そこで、今回は ScottPlot 4.1 用に書き直したデモプログラムの紹介と、 旧バージョン(4.0)との違いについて触れたいと思います。

旧バージョンの仕様について確認されたい方は、こちらの記事をご一読ください。

また、ScottPlotの公式ページにはグラフのサンプルとソースコードが掲載されています。

この記事を読んだ後で、さらに詳しい情報が必要な方は、公式ページが非常に参考になります。

デモプログラムの概要

今回のデモプログラムの画面は次の様になります。

タブが3つあって、各タブに4グラフ、合計12種類のグラフを表示します。

具体的には、下記のグラフが表示されます。

ScottPlotの構造

ScotPlot は、ScottPlot.Plot でインスタンスを生成し、そのインスタンスに対して折線グラフや棒グラフを追加していきます。

各グラフの太さや色、表示する軸(X,Yども2軸まで表示可能)は、グラフのメソッドを読んだ時に返されるオブジェクトに対して行います。

ScottPlot 4.0 までは、グラフ作成メソッドに色や太さなどの引数があったのですが、ScottPlot 4.1 から上記の仕様変更が行われたため、引数がかなり省略されています。

下図は、ScottPlotクラスの内部構造のイメージ図となります。

ちなみに、デモプログラムでは ScottPlotをコントロールとして画面に張り付け、”uxChart” という名を付けており、この場合は以下のような記述になります。

ScottPlot 4.1 のインストール方法

今回は Visual Studio 2022 を前提とした解説になりますが、Visual Studio の過去バージョン(2019,2017)をお使いの方でも共通です。

まず、NuGetから「scottplot」というキーワードで検索し、「ScottPlot.WPF」を自分のプロジェクトにインストールします。

WindowsFormで利用されたい方は、その下の「ScottPlot.WinForms」をお選びください。

デモプログラムの解説

参考までにデモプログラムのソースコードを公開しますが、ScottPlotは入っていません。

リビルドを行う場合は、事前にNuGetを使ってインストールをお願いします。

デモプログラムのソースコードダウンロードURL

デモプログラムのソースコードはこちらからダウンロードできます。

XAMLのソースコード

XAMLのソースコードは以下の通りです。

C#のソースコード

C#側のソースコードは以下の通りです。

ソースコードの解説

こちらの記事で紹介したデモプログラムを、ScottPlot 4.1 用に書き直したものなので、メソッドの仕様はほとんど同じです。

1点だけ異なるのが、 DrawLine メソッドです。

ScottPlot 4.1 からはY軸を2軸にまで利用できるようになりました。

そこで、DrawLineメソッドの引数に軸が指定できるようにしています。

旧デモプログラムからの変更箇所

もし既に旧バージョンのScottPlotを使っていて、今回最新バージョンに置き換えようと考えている方の参考として、今回私が行った修正点を簡単に解説しておきます。

WpfPlotの plt プロパティが Plot に変わった 

ScottPlot は、WpfPlot の plt プロパティからオブジェクトを取得し、このオブジェクトに備わっている各グラフ描画メソッドを呼び出すことでグラフ描画します。

今回は、このプロパティの名前が Plot に変更されています。

グラフ描画メソッドの名前が変わった

従来のグラフ描画メソッドは、PlotBar、PlotScatter、PlotLineなど、先頭にPlotが付いていました。

Ver 4.1 からは AddBar、AddScatter、AddLine の様に先頭がAddに代わっています。

グラフ描画メソッドの引数が変わった

冒頭にも説明しましたが、今までは幅や色などグラフのデザインを指定する場合は、各グラフ描画メソッドの引数を使っていました。

Ver 4.1 からは、引数で指定するのではなく、グラフ描画メソッドが返すオブジェクトに対してデザインを指定します。

この仕様変更により引数が見直されており、全てではありませんが多くのメソッドにおいて、引数の名前や引数の並び変わったり、廃止されています。

Legendのロケーション指定が変わった

凡例の表示を行うLegendメソッドには、凡例をグラフのどこに表示するかを指定する location 引数があります。

Ver 4.1 では、この location 引数の指定が enum Location から enum Alignment に変更されています。

これは Legend に限ったものではなく、その他のメソッドにおいても同様です。

Y第2軸が指定できるようになった

これは大変うれしい拡張機能です。

指定の方法は簡単で、グラフ描画メソッドの戻り値にあるYAxis2に、表示したい軸を設定し、最後に 2軸表示用のメソッドを呼ぶだけです。

実は、X軸、Y軸とも2軸まで指定できるようになっています。

ただ、今までにX軸を2軸つかうグラフは見たことが無いので、今回は取り扱いませんでしたが、XAxisIndexに使いたいX軸を指定し、XAxis2.Tick(true) とするだけです。

HistGram用のデータ集計を行うメソッドが変わった

まず名前空間の階層が次の様に変わっています。

ScottPlot.Statictics.Histogram ⇒ ScottPlot.Statistics.Common.Histogram

また、データの最大、最小、ビンサイズを指定するようになっていて、バケット数(階級をいくつに分割するか)やバーの太さなどの引数が無くなりました。

まとめ

今回は ScottPlot 4.1 をWPFで使う方法について、デモプログラムを交えて解説しました。

こまごまとした仕様変更が行われているため、旧バージョンから乗り換える場合はそれなりの修正が必要となります。

しかし、この記事を読んでいただければ、大枠で変更のポイントが分かるので、そんなに時間は掛からないのではないかと思います。

新しいグラフも追加されているので、それらを使いたい場合、もしくは2軸が使いたい場合は、是非ScottPlot 4.1 をご活用下さい。

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