はじめに
ScottPlotの「Ver. 4.1.58」で、拡大・縮小を制限する方法を解説します。
以前の記事で旧バージョン(4.0系)で、AxisBoundsを使う方法を解説していましたが、4.1系のバージョンアップの中で、InnerViewLimit/OuterViewLimitを使う方法に変わったようです。
コメントにて「Ver.4.1.58」で拡大を限定する方法を質問いただいたので、今回は2022年10月時点での最新バージョンである、「Ver.4.1.58」で拡大・縮小を限定する方法を解説したいと思います。
※ 『きいち』さん、質問いただきありがとうございます!
環境
この記事は以下の環境で作成しています。
環境 | バージョン | 備考 |
VisualStudio | 2019 | |
.NET Framework | 4.7.2 | |
ScottPlot | 4.1.58 | |
Windows | 11 | 10でもOKです。 |
※ ScottPlotのインストール方法はこちらの記事をご覧ください。

プログラム概要
今回のプログラムの概要は以下の通りです。
- 散布図の設定をする
- 拡大(Zoom in ) の制限を設定する
- 縮小(Zoom out ) の制限を設定する
- グラフを描画する。
実行結果
後述するコードを実行すると、以下のようにScottPlotで拡大・縮小を制限することができます。
全体コード
全体コードは以下の通りです。詳細な内容は後述する「コードのポイント」で解説します。
※デザイナでScottPlotのコントロール「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 WindowsFormsApp1
{
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.AddScatter(pointX, pointY, label: "ラベル");
// タイトルを設定します
formsPlot1.Plot.Title("拡大・縮小の制限");
// 拡大した時の目盛の最大・最小を設定します
formsPlot1.Plot.SetInnerViewLimits(xMin: -2.5, xMax: 10, yMin: -2.5, yMax: 10);
// 縮小した時の目盛の最大・最小を設定します
formsPlot1.Plot.SetOuterViewLimits(xMin: -100, xMax: 100, yMin: -100, yMax: 100);
// Legend(凡例)の表示を指定します。
formsPlot1.Plot.Legend();
// ScottPlotのコントロールにグラフを描画(表示)します。
formsPlot1.Render();
}
}
}
コードのポイント
散布図の設定
Plot.AddScatter関数で散布図にポイントデータ、ラベル名称を設定します。Titleに文字列を設定することで、グラフ上にタイトルを表示できます(日本語もOK)。
// サンプル用のデータです。
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.AddScatter(pointX, pointY, label: "ラベル");
// タイトルを設定します
formsPlot1.Plot.Title("拡大・縮小の制限");
拡大(Zoom in)の制限を設定する
Plot.SetInnerViewLimits関数で拡大時の制限を設定します。引数の「xMin」「xMax」「yMin」「yMax」は、拡大時の軸の以下の値に対応しており、指定した値以下の拡大を制限します。
// 拡大した時の目盛の最大・最小を設定します
formsPlot1.Plot.SetInnerViewLimits(xMin: -2.5, xMax: 10, yMin: -2.5, yMax: 10);
縮小(Zoom out)の制限を設定する
Plot.SetOuterViewLimits関数で縮小時の制限を設定します。引数の「xMin」「xMax」「yMin」「yMax」は縮小時の以下の値に対応しており、指定した値以上の縮小を制限します。
// 縮小した時の目盛の最大・最小を設定します
formsPlot1.Plot.SetOuterViewLimits(xMin: -100, xMax: 100, yMin: -100, yMax: 100);
散布図を表示する
凡例を表示し、グラフを描画します。
// Legend(凡例)の表示を指定します。
formsPlot1.Plot.Legend();
// ScottPlotのコントロールにグラフを描画(表示)します。
formsPlot1.Render();
まとめ
ScottPlotの最新バージョン「4.1.58」で、拡大・縮小の範囲を制限する方法について解説しました。公式のCookBookには載っておらず、関数名のみFAQに書かれていたため、使い方は挙動から調べてみました。
拡大・縮小はほぼ制限できそうですが、移動(右ドラッグ)は少々怪しげなので、運用上で回避する必要があるかもしれません。
参考になればうれしいです。
お知らせ
今月号のSoftware Designは「もっとTypeScriptの力を引き出そう」
JavaScriptの拡張言語でしょ?と思っているかたへ、Union型などTypeScriptの持つ秘めたる力を解説する特集となっています。
個人的には第2特集の「Ubuntuの現代的な使い方」がの方が気になりました。より詳しい内容は以下のリンクからご覧ください。

質問・要望 大歓迎です
「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。
使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。
お世話になり、ありがとうございました。
参考にさせていただきました。