Createメソッドは、新しいグラフの作成に使用されます。
GraphPage gp; gp.Create("3D"); // 3Dテンプレートを使ってグラフを作成
GraphPage gp("Graph1"); Tree tr; tr = gp.GetFormat(FPB_ALL, FOB_ALL, true, true); out_tree(tr);
次のサンプルコードは、2色のグラデーションでページの背景色をセットする方法を示しています。
Tree tr; tr.Root.Background.BaseColor.nVal = SYSCOLOR_RED; tr.Root.Background.GradientControl.nVal = 1; tr.Root.Background.GradientColor.nVal = SYSCOLOR_BLUE; GraphPage gp("Graph1"); if(0 == gp.UpdateThemeIDs(tr.Root) ) gp.ApplyFormat(tr, true, true);
GraphLayer gl = Project.ActiveLayer(); Tree tr; tr = gl.GetFormat(FPB_ALL, FOB_ALL, true, true); out_tree(tr);
以下のサンプルコードは、グラフレイヤオブジェクトの背景を黒線フォーマットにセットする方法を示します。
GraphLayer gl = Project.ActiveLayer(); Tree tr; tr.Root.Background.Border.Color.nVal = SYSCOLOR_BLACK; tr.Root.Background.Border.Width.nVal = 1; tr.Root.Background.Fill.Color.nVal = SYSCOLOR_WHITE; if( 0 == gl.UpdateThemeIDs(tr.Root) ) gl.ApplyFormat(tr, true, true);
このサンプルは、追加の線、Y=0/X=0での線、反対の線を表示する方法を示しています。
GraphLayer gl = Project.ActiveLayer(); Axis axesX = gl.XAxis; axesX.Additional.ZeroLine.nVal = 1; // Y = 0の線を表示 axesX.Additional.OppositeLine.nVal = 1; // X軸の反対の線を表示
このサンプルは、グリッド線の表示方法および色付けの方法を示しています。
色の値は、Originの内部のカラーパレットまたはRGB値へのインデックスにすることができます。 色の値についての詳細は、データ型と変数の色をご覧ください。
GraphLayer gl = Project.ActiveLayer(); Axis axisY = gl.YAxis; Tree tr; // 主グリッド表示 TreeNode trProperty = tr.Root.Grids.HorizontalMajorGrids.AddNode("Show"); trProperty.nVal = 1; tr.Root.Grids.HorizontalMajorGrids.Color.nVal = RGB2OCOLOR(RGB(100, 100, 220)); tr.Root.Grids.HorizontalMajorGrids.Style.nVal = 1; // 実線 tr.Root.Grids.HorizontalMajorGrids.Width.dVal = 1; // 副グリッド表示 trProperty = tr.Root.Grids.HorizontalMinorGrids.AddNode("Show"); trProperty.nVal = 1; tr.Root.Grids.HorizontalMinorGrids.Color.nVal = SYSCOLOR_GREEN; // 緑 tr.Root.Grids.HorizontalMinorGrids.Style.nVal = 2; // ドット tr.Root.Grids.HorizontalMinorGrids.Width.dVal = 0.3; if(0 == axisY.UpdateThemeIDs(tr.Root) ) { bool bRet = axisY.ApplyFormat(tr, true, true); }
このサンプルは、スケールのパラメータ、増分、スケールタイプなどをセットする方法を示しています。
GraphLayer gl = Project.ActiveLayer(); Axis axesX = gl.XAxis; axesX.Scale.From.dVal = 0; axesX.Scale.To.dVal = 1; axesX.Scale.IncrementBy.nVal = 0; // 0=値で増加; 1=主目盛の数 axesX.Scale.Value.dVal = 0.2; // 増分 axesX.Scale.Type.nVal = 0;// 線形 axesX.Scale.Rescale.nVal = 0; // 再スケールタイプ axesX.Scale.RescaleMargin.dVal = 8; // 8パーセント
次のサンプルは、Y 軸の主目盛数をセットする方法を示しています。
GraphLayer gl = Project.ActiveLayer(); Axis axesY = gl.YAxis; axesY.Scale.IncrementBy.nVal = 1; // 0: 値で増加; 1: 主目盛の数 axesY.Scale.MajorTicksCount.nVal = 5;
GraphLayer gl = Project.ActiveLayer(); Axis axisX = gl.XAxis; // 軸フォーマット設定をツリーに取得 Tree tr; tr = axisX.GetFormat(FPB_ALL, FOB_ALL, true, true); out_tree(tr);
軸ラベルは、通常のテキストオブジェクトであり、GraphObjectクラスを使ってOrigin Cでアクセスできます。 デフォルトグラフでは、X軸はXBという名前で、Y軸はYLという名前になっています。 次のコードは、XおよびY軸ラベルにアクセスする方法を示し、デフォルトグラフがアクティブページとします。
GraphLayer gl = Project.ActiveLayer(); // アクティブグラフレイヤ取得 GraphObject grXL = gl.GraphObjects("XB"); // X軸ラベルを取得 GraphObject grYL = gl.GraphObjects("YL"); // Y軸ラベルを取得
これで、軸ラベルにアクセスし、値を変更できます。 次のコードは、X軸ラベルを直接セットし、Y軸ラベルをLabTalk文字列変数にリンクすることで間接的にセットします。 LabTalk変数へのリンクは、ラベルのプログラミング制御オプション"変数へリンク"を有効にする必要があります。 このオプションはデフォルトで有効になっています。
grXL.Text = "My New X Asis Label"; LT_set_str("abc$", "My String Variable"); grYL.Text = "%(abc$)";
ラベルが変わったことを確認するには、グラフページをリフレッシュする必要があります。 GraphLayerオブジェクトを使って、次のコードでページをリフレッシュできます。
gl.GetPage().Refresh();
このサンプルは、上X軸を表示する方法を示します。
// 軸と刻みを表示 Tree tr; TreeNode trProperty = tr.Root.Ticks.TopTicks.AddNode("Show"); trProperty.nVal = 1; // 軸ラベルを表示 trProperty = tr.Root.Labels.TopLabels.AddNode("Show"); trProperty.nVal = 1; GraphLayer gl = Project.ActiveLayer(); Axis axesX = gl.XAxis; if(0 == axesX.UpdateThemeIDs(tr.Root) ) { bool bRet = axesX.ApplyFormat(tr, true, true); }
このサンプルは、軸ダイアログ->軸の主要設定(タイトル・形態)でフォーマットをセットする方法を示しています。
GraphLayer gl = Project.ActiveLayer(); Axis axesX = gl.XAxis; Tree tr; // データプロットの色を従って、刻みの色を自動にセット tr.Root.Ticks.BottomTicks.Color.nVal = INDEX_COLOR_AUTOMATIC; tr.Root.Ticks.BottomTicks.Width.dVal = 3; tr.Root.Ticks.BottomTicks.Major.nVal = 0; // 0:刻みを両側表示 tr.Root.Ticks.BottomTicks.Minor.nVal = 2; // 2:外側 tr.Root.Ticks.BottomTicks.Style.nVal = 0; // 実線 if(0 == axesX.UpdateThemeIDs(tr.Root) ) bool bRet = axesX.ApplyFormat(tr, true, true);
このサンプルは、指定した位置で軸ラベルをセットする方法を示します。軸ダイアログの軸目盛のカスタム化タブで同じ操作を行うことができます。
GraphLayer gl = Project.ActiveLayer(); Axis axesX = gl.XAxis; Tree tr; // スケール値として軸の開始と終了を表示 tr.Root.Labels.BottomLabels.Custom.Begin.Type.nVal = 2; tr.Root.Labels.BottomLabels.Custom.End.Type.nVal = 2; // 特別な値とテキストを特定のポイントにセット tr.Root.Labels.BottomLabels.Custom.Special.Type.nVal = 3; tr.Root.Labels.BottomLabels.Custom.Special.Label.strVal = "Mid"; tr.Root.Labels.BottomLabels.Custom.Special.Value.dVal = 12; if(0 == axesX.UpdateThemeIDs(tr.Root) ) { bool bRet = axesX.ApplyFormat(tr, true, true); }
このサンプルは、倍率の変更によってページサイズが変更されたときに、フォントサイズと線の太さをスケールする方法を示しています。
void change_graph_and_font_size(double dNewWidth = 5) { GraphPage gp = Project.ActiveLayer().GetPage(); Tree tr1;tr1 = gp.GetFormat(FPB_ALL, FOB_ALL, true, true); double dOldWidth = tr1.Root.Dimension.Width.dVal; double factor = dOldWidth/tr1.Root.Dimension.Height.dVal; Tree tr2; tr2.Root.Dimension.Width.dVal = dNewWidth; tr2.Root.Dimension.Height.dVal = dNewWidth / factor; if(0 == gp.UpdateThemeIDs(tr2.Root)) { gp.ApplyFormat(tr2, true, true); string strScript; //page -afu : 倍率変更 //win -z0 : ページをウィンドウサイズに合わせる strScript.Format("page -AFU %f;win -z0", -dNewWidth/dOldWidth); gp.LT_execute(strScript); } }
Note:
この場合、tr1は現在の寸法を取得するためにのみ使用され、新しい値は適用されません。
|