仮想行列ワークシートウィンドウから仮想行列を構築することができます。仮想行列の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);
|