Minimum Origin Version Required: Origin8 SR2
This example is used to set grouped format for grouped plots with Line + Symbol type, including line color, line style, symbol shape and symbol interior.
To run this example, please run the following LabTalk first to create the desired graph.
newbook; // create a new workbook fname$ = system.path.program$ + "Samples\Curve Fitting\Multiple Gaussians.dat"; // file path impasc; // import data file plotxy iy:=(?,1:end) plot:=202; // plot line+symbol
void grouped_line_symbol() { GraphLayer gl = Project.ActiveLayer(); if(!gl) { out_str("Cannot get the graph layer!"); return; } GroupPlot gplot = gl.Groups(0); if(!gplot) { out_str("Cannot get the group plot!"); return; } vector<int> vNester; // the Nester is an array of types of objects to do nested cycling in the group vNester.SetSize(4); // four types of setting to do nested cycling in the group vNester[0] = 0; // cycling line color in the group vNester[1] = 3; // cycling symbol type in the group vNester[2] = 2; // cycling line style in the group vNester[3] = 8; // cycling symbol interior in the group gplot.Increment.Nester.nVals = vNester; // set Nester of the grouped plot int nNumPlots = gl.DataPlots.Count(); // nNumPlots = 4 in this example vector<int> vLineColor, vSymbolShape, vLineStyle, vSymbolInterior; // four vectors for setting line color, symbol shape, line style and symbol interior of grouped plots vLineColor.SetSize(nNumPlots); vSymbolShape.SetSize(nNumPlots); vLineStyle.SetSize(nNumPlots); vSymbolInterior.SetSize(nNumPlots); // setting corresponding values to four vectors for(int nPlot=0; nPlot<nNumPlots; nPlot++) { if(nNumPlots>=4) { switch (nPlot) { case 0: // setting for plot 0 vLineColor[nPlot] = SYSCOLOR_BLUE; vSymbolShape[nPlot] = 1; // square vLineStyle[nPlot] = 1; // dash vSymbolInterior[nPlot] = 1; // open break; case 1: // setting for plot 1 vLineColor[nPlot] = SYSCOLOR_OLIVE; vSymbolShape[nPlot] = 3; // up triangle vLineStyle[nPlot] = 2; // dot vSymbolInterior[nPlot] = 2; // dot center break; case 2: // setting for plot 2 vLineColor[nPlot] = SYSCOLOR_RED; vSymbolShape[nPlot] = 5; // diamond vLineStyle[nPlot] = 6; // short dot vSymbolInterior[nPlot] = 5; // x center break; default: // setting for other plot vLineColor[nPlot] = SYSCOLOR_CYAN; vSymbolShape[nPlot] = 8; // hexagon vLineStyle[nPlot] = 0; // solid vSymbolInterior[nPlot] = 0; // solid break; } } } Tree trFormat; trFormat.Root.Increment.LineColor.nVals = vLineColor; // set line color to theme tree trFormat.Root.Increment.Shape.nVals = vSymbolShape; // set symbol shape to theme tree trFormat.Root.Increment.LineStyle.nVals = vLineStyle; // set line style to theme tree trFormat.Root.Increment.SymbolInterior.nVals = vSymbolInterior; // set symbol interior to theme tree if(0 == gplot.UpdateThemeIDs(trFormat.Root) ) { bool bb = gplot.ApplyFormat(trFormat, true, true); // apply theme tree } }
Minimum Origin Version Required: Origin 7.5
The following example is used to set the colors of grouped bars. The colors are customized according to the column names. So, you can specify the unique color to the bar created from the column with the specified name. As the example shows, the bar created from the column named "N" will always have the red color.
To run this example, please run the following LabTalk script first to create the desired graph.
win -n wks ColumnColor; // create a new window wks.addcol(A); // add column named A ColumnColor_A[1] = 1; // set cell one with 1; wks.col1.type = 4; // set to X column wks.addcol(B); ColumnColor_B[1] = 2; wks.addcol(O); ColumnColor_O[1] = 3; wks.addcol(P); ColumnColor_P[1] = 4; wks.addcol(C); ColumnColor_C[1] = 5; wks.addcol(N); ColumnColor_N[1] = 6; wks.addcol(D); ColumnColor_D[1] = 7; worksheet -s 1 1 wks.ncols 1; // select cell one of all columns worksheet -p 203 column; // make grouped bar plots;
void bar_color_map() { GraphLayer gl = Project.ActiveLayer(); // get active graph layer if(!gl) { out_str("Cannot get the active graph layer!" ); return; } GroupPlot gpl = gl.Groups(0); // get first grouped plots vector<int> vcColors; int nPlotCount = gl.DataPlots.Count(); // get number of plots vcColors.SetSize(nPlotCount); // set vector size for(int nColor=0; nColor<nPlotCount; nColor++) // set color vector according to the column name { DataPlot dp = gl.DataPlots(nColor); // get dataplot string strDatasetName = dp.GetDatasetName(); int nStart = strDatasetName.Find('_'); // find delimited "_", between workbook name and colcumn name int nEnd = strDatasetName.Find('@'); // find delimited "@", between column name and worksheet index string strColName; // get column name if(nEnd == -1) // workbook contains only one worksheet strColName = strDatasetName.GetToken(1, '_'); else // workbook contains more than one worksheet strColName = strDatasetName.Mid(nStart+1, nEnd-nStart-1); if(0 == strColName.Compare("C")) // set color value one by one vcColors[nColor] = 0; // 0 = black else if(0 == strColName.Compare("N")) vcColors[nColor] = 1; // 1 = red else if(0 == strColName.Compare("O")) vcColors[nColor] = 2; // 2 = green else if(0 == strColName.Compare("P")) vcColors[nColor] = 3; // 3 = blue else vcColors[nColor] = 4; // 4 = cyan } gpl.Increment.BackgroundColor.nVals = vcColors; // set increment colors }
This example is used to set the offset of the grouped plot individually.
Please run the following LabTalk script to create the desired graph first.
newbook; // create a new workbook fname$ = system.path.program$ + "Samples\Graphing\Group.DAT"; // file path impasc; // import data file plotxy iy:=(?, 1:end) plot:=200; // plot line
void set_offset(int nPlotLTIndex, double xOffset, double yOffset) { GraphLayer gl = Project.ActiveLayer(); // get the active graph layer if(!gl) { out_str("Please activate a graph!"); return; } GroupPlot grPlot = gl.Groups(0); // get the first grouped plot if(!grPlot) { out_str("Invalid grouped plot!"); return; } if(nPlotLTIndex <= 0 || nPlotLTIndex > grPlot.GetCount()) { out_str("Invalid plot index!"); return; } Tree trFormat; trFormat.Root.Stack.Offset.dVal = 4; // set Stack to Individual trFormat.Root.Stack.X.dVal = 1; // enable X offset trFormat.Root.Stack.Y.dVal = 1; // enable Y offset if(0 == gl.UpdateThemeIDs(trFormat.Root)) { bool bRet = gl.ApplyFormat(trFormat, true, true); // enable settings of offset individually if(bRet) { DataPlot dp = grPlot.GetDataPlot(nPlotLTIndex - 1); // get the plot in the layer string strPlotName = dp.GetDatasetName(); // get the plot name string strLTPlotXOffset, strLTPlotYOffset; strLTPlotXOffset.Format("set %s -sx %f;", strPlotName, xOffset); // set x offset of the plot strLTPlotYOffset.Format("set %s -sy %f;", strPlotName, yOffset); // set y offset of the plot gl.LT_execute(strLTPlotXOffset + strLTPlotYOffset); // execute the LabTalk command } } }
To set the offset of the 2nd plot in x and y direction with 2 and 3 respectively, run
set_offset 2 2 3;
This example shows how to access theme of one plot in group.
To run this example, please
void test_group_plot_special_point_format() { GraphLayer gl = Project.ActiveLayer(); int nCount = gl.DataPlots.Count(); DataPlot dp = gl.DataPlots(nCount > 1 ? 1 : 0); //System variable @PGT: theme for plot in group, //1 for using group theme (default, old behavior) //0 for using plot's own theme LTVarTempChange pgt("@PGT", 0); Tree tr; tr = dp.GetFormat(FPB_ALL, FOB_ALL, TRUE, TRUE); tr.Root.Points.Point1.Label.Size.dVal = 30; tr.Root.Points.Point1.Label.AutoFace.nVal = 0; tr.Root.Points.Point1.Label.Face.nVal = 2; dp.UpdateThemeIDs(tr.Root); dp.ApplyFormat(tr, true, true); }