ScottPlotの 拡大・縮小・移動の範囲を制限する方法についてご紹介します。
「グラフの拡大・縮小が出来るのはいいけれど、操作しているとグラフが消えてしまう」という方におすすめです。
本家のCookBookには記載がなく、GitHubのIssuesにだけ記載されている情報です。
- 実行時のGIF動画 ( 範囲指定あり/なし )
- 全体コード
操作のサンプル動画
範囲指定なしの場合
範囲指定なしの場合の動画です。上下左右への移動ですぐにグラフが画面外に消えてしまい、
縮小した場合も再現なく小さくなってしまいます。

範囲指定ありの場合
範囲指定ありの場合の動画です。範囲設定を行うことで、上下左右への移動でもグラフが消えることはなくなりました。縮小も一定の範囲で止まります。

全体コード
範囲指定を設定するコードです。 AxisBounds() の1行のみで設定できます。
引数で、Xの最小、Xの最大、 Yの最小、Yの最大を指定可能です。
public partial class Form8 : Form
{
//
// デザイナでScottPlotの描画コントロール formsPlot1を
// 設定しています。
//
public Form8()
{
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.plt.PlotScatter(pointX, pointY, label: "グラフ1");
// コントロールにタイトルを設定します。
formsPlot1.plt.Title("プロット1");
//
// 拡大・縮小/・移動が可能な範囲を設定します。
// minX, maxX, minY, maxY の順番です。
//
formsPlot1.plt.AxisBounds(-1.0, 6.0, -1.0, 6.0);
// Legend(凡例)の表示を指定します(指定しないと表示されません)。
formsPlot1.plt.Legend();
// ScottPlotのコントロールにグラフを描画(表示)します。
formsPlot1.Render();
}
}
まとめ
グラフの移動・拡大・縮小に範囲指定をかける方法についてご紹介しました。
CookBookには載っていませんが、意外と便利な機能だと思います。
範囲指定の方法について調べている方の参考になればうれしいです。
伝わるグラフを作る
この記事の読者の方々は、少しでも「分かりやすく」「見やすく」といったことも考えてアプリケーションを作られている方が多いと思います。それだけでも十分に素晴らしいですが、「そもそもどんなグラフがユーザーにとって分かりやすいか?」といった、デザインやUXの知識・視点も結構おもしろいです。
以下の本など、比較的手軽な値段で読める書籍がいくつかあるので、ぜひ覗いてみてください。
応援・要望お待ちしてます
ブログを見ていて「この辺を詳しく知りたい」「このライブラリの使い方を知りたい」「こんなことで困ってる」...etc があれば、コメント・問い合わせ・Twitterで教えてください。質問・ご要望に合わせて解説記事を作ります。
ブログを気に入っていただけたり、「応援してもいいよ」という方がいたら、ブログやSNSでの紹介をお願いします。 あたたかい応援は、中の人の更新の大きな励みになります。