はじめに
C#のグラフライブラリ ScottPlotを使って、グラフをリアルタイムに表示する簡単な方法を、GIF動画と短い全体コード付で解説していきます。
本内容のScottPlot Ver.4.0系を使う方法は、データ数によって描画が止まるなどの現象が出るようです。リアルタイム描画を試してみたい方は以下のVer.4.1系を使う方法をご利用ください。
ScottPlotを使ってグラフをリアルタイムに表示する
ScottPlotについて
ScottPlotって何?どう使うの?という方は、先に以下の記事をご覧ください。
概要や、使い方をプロジェクトを作成するところから解説しています。
リアルタイムでグラフ動画
後述のコードで、以下のようなリアルタイムのグラフを作成できます。

全体コード
全体コードは以下の通りです。基本的な流れは、以下の2つです。
- グラフデータをオブジェクトに追加
- グラフを更新
実際使う場合は、通信など別スレッドで取得したデータを・・・のようになると思いますが
今回はコードをシンプルにするため、Timerでデータの追加・グラフの更新を行っています。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ScottPlotLiveTest
{
// 以下のコントロールがFormに追加されていることを
// 前提にしています
// ScottPlotのコントロール(FormsPlot1)
// タイマーのコントロール (timer1)
public partial class Form1 : Form
{
// ポイントデータ格納用です
List<double> point = new List<double>();
// ポイントデータの作成に使うカウンタです
int counter = 0;
public Form1()
{
InitializeComponent();
// タイマーの処理を開始します
timer1.Start();
}
// タイマーの処理です
// インターバルは500msに設定しています
private void timer1_Tick(object sender, EventArgs e)
{
// 3周期ごとにY軸を初期化して、のこぎり型の波形を生成します。
if( counter >= 3 ) { counter = 0; }
// ポイントデータを追加します
point.Add(counter + 1);
// コントロールにポイントデータをセットします
// 色指定をしないと描画ごとに色が変わってしまうので、指定しています。
formsPlot1.plt.PlotSignal( point.ToArray(), color : Color.Blue );
// ポイントデータに合わせて表示範囲を自動調整します。
formsPlot1.plt.AxisAuto();
// コントロールを描画します
formsPlot1.Render();
// カウンタの更新です。
counter++;
}
}
}
コードのポイント
PlotSignal()でデータのY軸の値を設定します。
X軸はデータ追加時に自動的に前回値+1された値がセットされます。
// コントロールにポイントデータをセットします
// 色指定をしないと描画ごとに色が変わってしまうので、指定しています。
formsPlot1.plt.PlotSignal( point.ToArray(), color : Color.Blue );
デフォルトだと更新ごとに線の色が変わって見づらいです。
「color」で線の色を指定すると防止できます。
formsPlot1.plt.PlotSignalXY()でX軸の値をセットすることも出来ます。
まとめ
ScottPlotを使って、リアルタイムにグラフを描画するやり方について解説しました。
参考になればうれしいです。
本家サイトに、配列を大量に確保してLiveデータを表示する方法も載っています。
PlotTypes: Signal – Display first N points
試したところ、非表示に設定したポイントも表示されてしまったので、今回の記事では随時ポイントを追加する方法を紹介しています。
記事のコードでは処理が遅い場合は、本家サイトのやり方も参考にしてみてください。
自分でコードを打つ時間がない時は
『自分でやるには時間がない、でも頼める人もいない』と悩んでいるあなたに「ココナラ」があります。
登録者数は約200万。専門家・フリーランスも多く、制作サンプルやレビューを見て自分にあった人を選ぶことができます。特に人気の「Python」なら絶対数が多いので「デキる人」も見つけやすいです。登録は無料なのでどんな人・チームがいるか確認してみてください。
(HP製作・動画製作・面倒な業務文書の作成代行も依頼もできますよ)
1分以内に完了!無料会員登録はこちら
【おすすめ】UdemyでC#のスキルを上げる
C#のスキルを上げるには、Udemyの動画講座がおすすめです。「C#で読みやすいコードを書く50の方法」「保守性の高いコードの書き方」など、脱初心者/スキルアップのための講座が多数公開されています。
1講座 2440円程度で返金保証あり。視聴期間無制限なので「自分のペースでコスパ良くスキルアップしたい」「失敗したくない」という方におすすめです。
質問・要望 大歓迎です
「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。
使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。
参考になりました、どうもありがとうございます。
あおさん、こんにちは。
えすです。
コメントありがとうございます。お役に立ててうれしいです。
他にも気になるところなどあれば、お気軽にコメントしてくださいね。