仮想行列
ワークシートウィンドウから仮想行列を構築することができます。仮想行列のXYZデータに対するワークシートのデータ範囲を別々に取得します。XおよびYデータを指定しない場合、デフォルトデータが自動的に使われます。次のコードはアクティブワークシートウィンドウから仮想行列を構築し、この仮想行列をグラフにプロットする方法を示しています。
// 実行前に、アクティブワークシートにデータがあることを確認 // 例えば、新しいワークシートに、Originのインストールフォルダの // Samples\Matrix Conversion and Gridding にあるXYZ Random Gaussian.dat をインポート Worksheet wks = Project.ActiveLayer(); int r1, r2; int c1 = 0, c2 = 2; wks.GetBounds(r1, c1, r2, c2); // Zデータのみデータ範囲を構築すると // X、Yデータは自動的に割り当て DataRange dr; dr.Add("Z", wks, r1, c1, r2, c2); MatrixObject mo; mo.Attach(dr); int nRows = mo.GetNumRows(); int nCols = mo.GetNumCols(); // デフォルトのx, y 範囲を取得 double xmin, xmax, ymin, ymax; mo.GetXY(xmin, ymin, xmax, ymax); GraphPage gp; gp.Create("CONTOUR"); GraphLayer gl = gp.Layers(0); gl.AddPlot(mo, IDM_PLOT_CONTOUR); gl.Rescale(); mo.Detach();
XYデータを割り当てたい場合、データは単調増加あるいは、減少するものである必要があります。次のサンプルは、XYZデータ範囲から仮想行列を構築する方法を示しています。
// アクティブレイヤには5列のデータがあるとする Worksheet wks = Project.ActiveLayer(); // 列0から4に対する最小と最大の行インデックスを取得 int r1, r2, c1 = 0, c2 = 4; wks.GetBounds(r1, c1, r2, c2); // XYZデータを持つデータ範囲オブジェクトを作成 DataRange dr; dr.Add("X", wks, 0, 1, 0, c2); // 最初のセルを除く最初の行 dr.Add("Y", wks, 1, 0, r2, 0); // 最初のセルを除く最初の列 dr.Add("Z", wks, 1, 1, r2, c2); MatrixObject mo; mo.Attach(dr);