ScottPlot

【C# グラフライブラリ】ScottPlotの紹介 まとめ

はじめに

無料で使えて、高機能・高速・良デザインのグラフを作成できる「ScottPlot」の紹介まとめです。

以前も紹介記事を書いてますが、新バージョンのリリースや、細かい機能も紹介してきたので、まとめもかねてて再度ScottPlotをなるべくわかりやすく紹介します。

ScottPlotのサンプルコードの実行結果
ScatterPlotのサンプルコードの実行結果
~ この記事の内容 ~
  • はじめに
  • ScottPlotの概要
  • 散布図の作り方
  • カスタマイズ・便利機能 コードも貼る
  • その他グラフ
  • まとめ

ScottPlotで出来ること
  • さくさく動くグラフを作れる。
  • グラフの拡大・縮小・移動がコードなしで作れる
  • 軸・凡例・目盛のカスタマイズできる
  • 大量のデータを読み込んでも描画が遅くない
  • 簡易的なリアルタイム描画もできる

ScottPlotの概要

ScottPlotは、無料で高機能・高速・良デザインのグラフを作成できるグラフライブラリです。NuGet対応なのでインストールも簡単です。MITライセンスなので商用でも利用することができます。

開発も活発で、2021年5月に大規模アップデートの「Ver.4.1」がリリースされました。本家HPにサンプルコードや画像が「CookBook」として体系化されて公開されています。

Ver.4.1のアップデートの概要や注目点などの詳細は以下の記事をご覧ください。

公式HP・紹介サイトなど

CookBookが掲載されている公式サイトや、GitHubのプロジェクトページは以下です。

また、以前は皆無でしたが、最近では日本語のサイトやQiitaの記事も見かけるようになってきました。日本での知名度が上がってきた証拠だと思うので、個人的にもうれしいです。

公式HP

https://swharden.com/scottplot/

GitHubプロジェクトページ

https://github.com/ScottPlot/ScottPlot

【WPF】いちばんやさしいScottPlot の使い方(WindowsForm共通)

https://resanaplaza.com/%E3%80%90wpf%E3%80%91%E3%81%84%E3%81%A1%E3%81%B0%E3%82%93%E3%82%84%E3%81%95%E3%81%97%E3%81%84scottplot-%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9%EF%BC%88windowsform%E5%85%B1%E9%80%9A%EF%BC%89/

C# グラフライブラリ ScottPlotのTips

https://qiita.com/ohru131/items/8cc5d3d539a74d05423d

※ Qiita記事での本サイトへのリンクの掲載ありがとうございます。

ライセンス・人気度・プラットフォーム

ScottPlotのライセンスや、DL数などは以下の通りです。

ライセンス MIT
.NETバージョン.NET 4.6.1~
.NET Core 2.0 ~
   
※.NET 5.0にも対応 
NuGet ダウンロード数   104K
GitHub Star数930 

プラットフォーム

  • Windows Forms
  • WPF
  • Avalonia
  • Console Application

※最新のVer.4.1系の内容を掲載しています
※ 2021年8月時点の情報です

散布図の作り方

以下のシンプルなグラフであれば、5行の実装で作ることができます。

下のGIF動画は、最新のScottPlot Ver.4.1で、線付きの散布図(折れ線グラフ)を作成したものです。
拡大・縮小や、デザインはデフォルトなので実装や設定はする必要ありません。

ScottPlot4.1での散布図の実行結果

全体コード

上記のグラフを作成するコードは以下の通りです。usingも含めて実装コードは5行のみです。

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;

using ScottPlot; // DataGenに使います

namespace FormScottPlot_41
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            // サンプル用のポイントデータです
            double[] xs = DataGen.Consecutive(51);
            double[] sin = DataGen.Sin(51);

            // データをプロットします
            formsPlot1.Plot.AddScatter(xs, sin);

        }
    }
}

より細かい作り方は・・・

NuGetでのインストール方法や、コントロールの貼り付け方など、さらに細かい内容は以下の記事をご覧ください。Ver.4.0の記事ですが最新版でも同じ方法で作ることができます。

カスタマイズ・便利機能

表示やグラフの設定についても、いろいろな機能が充実しています。長くなってしまうので詳細は過去の記事をご覧ください。Ver.4.0の記事もありますが、実装方法や実行時のイメージは確認できると思います。

グラフ操作・表示関連

  • 拡大・縮小範囲の制限
  • データに合わせた表示範囲の自動設定(オートスケール)
  • 目盛間隔や表示の設定

グラフのカスタマイズ関連

  • Y軸を日付にする
  • 第二軸を表示させる

リアルタイム描画

ScottPlotは静的(固定された)データの描画を得意とするため、あくまで「おまけ」程度ですが、簡易的にグラフをリアルタイムに描画することもできます。

まとめ

長くなってしまいましたが、ScottPlotの使い方や、細かい機能などについてまとめてみました。参考になればうれしいです。

ScottPlotについては他にも記事があります。興味のある方はトップページ右上のメニューから「ScottPlot」を選んで記事をご覧ください。

応援・要望お待ちしてます

ブログを見ていて「この辺を詳しく知りたい」「このライブラリの使い方を知りたい」「こんなことで困ってる」...etc があれば、コメント・問い合わせ・Twitterで教えてください。質問・ご要望に合わせて解説記事を作ります。

ブログを気に入っていただけたり、「応援してもいいよ」という方がいたら、ブログやSNSでの紹介をお願いします。 あたたかい応援は、中の人の更新の大きな励みになります。

ABOUT ME
えす
現役のソフトウェアエンジニアです。 C++ C# Python を使ってます。10年ちょい設計/開発部門にいましたが、今はQAエンジニアっぽいことをしています。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です