NPlot で値の表示範囲を設定する方法

割と基本的なことだとは思いますが、意識せずにプログラミングすると
嵌る恐れがある(というか、嵌りました)ので、やり方をメモします。

表示範囲を指定してグラフを描画したいときは、XAxis 及び YAxis の
WorldMax, WorldMin にそれぞれの値を設定すればよいです。
なので、例えば横軸の範囲を0以上60以下、縦軸の範囲を30以上100以下
とした折れ線グラフlinePlot1 を plotSurface2D1 に表示したい時は

// plotSurface2D1 は NPlot.Windows.PlotSurface2D クラスのオブジェクト。
// (GUIデザイナで貼り付けられるオブジェクト)
InitializeComponent();

NPlot.LinePlot linePlot1 = new NPlot.LinePlot();

// 横軸
plotSurface2D1.XAxis1.WorldMin = 0; // (1)
plotSurface2D1.XAxis1.WorldMax = 60;

// 縦軸
plotSurface2D1.YAxis1.WorldMin = 30;
plotSurface2D1.YAxis1.WorldMax = 100;

plotSurface2D1.Add(linePlot1); // (2)
plotSurface2D1.Refresh();

とすれば… 動きませんorz。 (1)の行で NullReferenceException
が発生してしまいます。XAxis1、YAxis1が、InitializeComponent()
メソッド終了時にはまだ作成されていないことが原因です。
(2)のメソッドの中でそれぞれの軸のオブジェクトがが作成されるよう
なので、一番簡単な解決方法は、

NPlot.LinePlot linePlot1 = new NPlot.LinePlot();

plotSurface2D1.Add(linePlot1); // (2)

// 横軸
plotSurface2D1.XAxis1.WorldMin = 0; // (1)
plotSurface2D1.XAxis1.WorldMax = 60;

// 縦軸
plotSurface2D1.YAxis1.WorldMin = 30;
plotSurface2D1.YAxis1.WorldMax = 100;

plotSurface2D1.Refresh();

このように、(1)より先に(2)の処理をやってしまえばよいかと
思います。
軸の設定を細かく行いたい、または、軸の設定を使い回したいと
いった場合は、

NPlot.LinePlot linePlot1 = new NPlot.LinePlot();

NPlot.Axis xAxis = linePlot1.SuggestXAxis();
NPlot.Axis yAxis = linePlot1.SuggestYAxis();

// このあたりで xAxis や yAxis を色々設定する。

plotSurface2D1.XAxis1 = xAxis;
plotSurface2D1.YAxis1 = yAxis;

plotSurface2D1.Add(linePlot1);
plotSurface2D1.Refresh();

このようにしてもよさそうです。




もっちーの小部屋 自作のソフトを公開してます。
http://www.geocities.jp/mocchi_2003/index.html