C#とWPFで自力でチャート(グラフ)を描画する

WPFで数万点のデータを高速にグラフに表示しようとすると、たいていのチャートライブラリで何十秒も描画に時間がかかって使い物にならないことが多いので、簡単にデータを見たいときに使用する簡易チャートライブライを作成してみました。

線グラフっぽいものが表示できるようになります。

動かしているところ

実際に表示を行うと以下のようになります。

要素の説明

グラフを作成するために以下の構成になっています。

  • SimpleChart : チャートを描画するためのクラス
  • Series : チャートの1つの系列を表す
  • Rgb24ImageBuffer : SimpleChartが利用する1ドットづつビットマップを作成するクラス
  • ImageFactory : 作成したビットマップをWPF用のクラスに変換する機能を持つ

で、SimpleChartクラスは以下のモデル(プロパティ)を持ちます。

f:id:Takachan:20171020000821p:plain

あとは、WFPの画面で各パラメータを変更しつつ[再描画]ボタンを押すとグラフをその都度作成して描画しています。

2系列2万点(合計4万点)で表示までに0.3秒程度だったので大量のデータをなんとなく高速に表示する目的は達成できました。

コード全体

作成したコードの全体をGitHubにアップしました。

github.com