ScottPlot

【GIF動画つき 初心者向け】ScottPlot Ver.4.1での散布図の作り方 【C# グラフ】

はじめに

無料で使える高速グラフライブラリ「ScottPlot」の最新バージョン4.1で、線付きの散布図(折れ線グラフ)を作る方法を解説します。

初心者の方にも分かりやすいよう、VisualStudioで新規プロジェクトを作成する所から、NuGetでScottPlotをインストール方法・コードを書く画面を出す方法まで、図付きの手順で丁寧に解説していきます。

手順を実施して20行程度のサンプルコードをコピペすると、最終的に以下のGIF動画のようなグラフを作ることができます。

実際に散布図のグラフを実行したgif動画

この記事では、最新のVer.4.1で散布図を作る方法を解説しています。旧バージョンの方法はこちらをご覧ください(実装コードが少し違います)。

環境

この記事は以下の環境で作成しています。

環境バージョンなど備考
VisualStudio   2019 Community 2017でも可
.NET4.7.2
プロジェクトWindowsFormアプリケーション 
OSWindows 10Wn7でも可
ScottPlot4.1.16

プロジェクトの作成とScottPlotのインストール

下記の手順でプロジェクトの新規作成とScottPlotのインストールを行います。

プロジェクトの選択

VisualStudioの新規プロジェクトで「WindowsFormプログラム(.NET Framework)」を選択して、次へを押します。

似た名前も多いですが、 WindowsFormプログラム(.NET Framework)」を選択してください。

プロジェクトの選択内容を説明する画像

新しいプロジェクトの構成

プロジェクトの名称を入力します。好きな名前で問題ありませんが、自動生成されるコードにも使用されるので、こだわりがなければ解説と同じ「FormScatterPlot41」としてください。

保存場所はデフォルトでもお好きな場所でも問題ありません。

プロジェクトの名前などの構成を説明する画像

NuGetパッケージの管理の表示

VisualStudioのメニューから、「プロジェクト」「NuGetパッケージの管理...」を選択します。

NuGetの表示方法を説明する画像

ScottPlotの検索とインストール

開いたウインド内で「参照」を選択し、検索欄に「ScottPlot」と入力します。

表示された「ScottPlot.WinForms」を選択します。

「バージョン」に「Ver.4.1.x」が表示されているのを選択して「インストール」を押します。

※ 末尾の数字に大きな違いはありません。インストール時の最新を使ってください。

NuGetでScottPlotを検索してインストールする方法を説明する画像

ライセンスの確認画面

インストール中、ScottPlotで使用している、MicrosoftのDLLへのライセンスの同意画面が表示されます。

一般的な「DLLを改変しないで使用すること」という内容のようです。同意しない場合はインストールが中断してしまうので、内容を把握した上で「同意する」を選択してください。

同意しても課金などは発生しません(無料)あくまでDLLを改変しないことへの同意です。

一般的な改変禁止の内容と考えていますが、ざっとの調査しかできていません。商用利用で厳密にライセンス調査・管理が必要な方は、ご自身で詳細に調べてからご利用ください。

MSのライセンスヘの同意画面の画像

インストールの完了

エラーなどの表示などがなく、以下のように「README.txt 」が表示されればインストールは完了です。

インストール成功後のREADMEの説明画面

コントロールの追加

インストールの完了後、下記手順でフォームにScottPlotのコントロール(グラフが描画される部分)を追加します。

デザイナの表示とコントロールの追加

ソリューションエクスプローラー内の「Form1.cs」を右クリックして「デザイナーの表示」を選択します。

デザイナ画面の表示方法を説明する画像


ツールボックスを選択し、一番上の「ScottPlot.WinForms」のコントロールを開きます。

「FormsPlot」が表示されるので、Formにドラッグ&ドロップして貼り付けます。

ScottPlotのコントロールの追加方法を説明する画像

Form上にScottPlotのグラフの枠が表示されていれば、コントロールの追加は完了です。

コードを実装するために、 ソリューションエクスプローラー内のForm1.cs」を右クリックして「コードの表示」を選択しコード画面を表示しておきます。

コードの表示方法を説明する画像

ソリューションエクスプローラーが表示されない場合は、デザイナの画面の何も表示されていない部分をクリックするか、メニューの「表示」「ソリューションエクスプローラー」をクリックしてください。

全体コード

Form1.csに実装するコードは以下の通りです。
(コントロールの名前はデフォルト(FormsPlot1)として実装しています)

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 FormScatterPlot41
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            // サンプル用のデータです。
            double[] pointX = { 1.0, 2.0, 3.0, 4.0, 5.0 };
            double[] pointY = { 1.0, 2.0, 3.0, 4.0, 5.0 };

            // グラフにタイトルを付けます
            formsPlot1.Plot.Title("タイトル");

            // X軸, Y軸に名前を付けます
            formsPlot1.Plot.XLabel("時間");
            formsPlot1.Plot.YLabel("値");

            // 線付きの散布図としてデータをセットします。凡例もあわせて設定します。
            formsPlot1.Plot.AddScatter(pointX, pointY, label: "漢字");

            // Legend(凡例)の表示を指定します(指定しないと表示されません)
            formsPlot1.Plot.Legend();

            // ScottPlotのコントロールに描画(表示)します。
            formsPlot1.Render();
        }
    }
}

実行結果と日本語の表示

上の説明では省略してしまいましたが、日本語の凡例・タイトル・軸名なども文字化けせず表示できます。地味ですが日本語が表示されないといったライブラリもある中うれしい機能です。

実行結果の画像

ScottPlotの簡単な操作方法です。Ctrlなどを使わずにマウスのみで操作することができます。

マウス操作         グラフ           
スクロール拡大・縮小
左クリック+ドラッグ上下左右への移動
右クリック+ドラッグX軸/Y軸の拡大縮小

まとめ

無料で使える高速グラフライブラリ「ScottPlot」の最新バージョン4.1で、線付きの散布図(折れ線グラフ)を作る方法を解説しました。

本家のHPでも、いろいろなグラフの作り方やカスタマイズの方法がCookBookとして掲載されていますので合わせてご覧ください。

https://swharden.com/scottplot/cookbook

このブログでもScottPlotのVer.4.1について、以下の内容を紹介しています。どれも簡単で短いコードで作成できるので、興味のある方は以下のリンクからご覧ください。

  • Ver.4.1 新機能についての紹介
  • 簡易的にリアルタイム表示する方法
  • X軸を日付にする方法
  • マウスで選んだポイント座標を表示する方法

ScottPlot Ver.4.1 新機能についての紹介

Ver.4.0からのバージョンアップで追加された機能の概要や、個人的に気になる機能についてをまとめています。

簡易的にリアルタイム表示する方法

ScottPlotを使って簡易的にグラフをリアルタイムで表示する方法です。

X軸を日付にする方法

X軸を日付にカスタマイズする方法です。

マウスで選んだポイント座標を表示する方法

マウスで選んだポイントをForm画面に表示する方法です。

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

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

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

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

COMMENT

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