Output to Report Table
Version Info
Minimum Origin Version Required: Origin 8 SR5
Example
This example will show you how to perform statistics analysis on data, and then put the results to the report table. The example will use the curve_stats function. Also, please refer to Creating Reports for more information about how to creating reports.
Before running the Origin C code, please run the following LabTalk script first to generate the required data.
newbook; // create a name workbook
fname$ = system.path.program$ + "Samples\Statistics\Descriptive Statistics on columns.txt";
impASC; // import the file to the workbook
void output_report_table()
{
Worksheet wks = Project.ActiveLayer(); // get the active worksheet
if(!wks)
return;
Column colX = wks.Columns(0); // get column A as X
Column colY = wks.Columns(3); // get column D as Y
vector vX = colX.GetDataObject(); // X vector
vector vY = colY.GetDataObject(); // Y vector
Tree trResult;
if(!curve_stats(vX, vY, trResult)) // perform statistics on column D, results to trResult
return;
int nID = 100; // node ID
int nTableFormat = GETNBRANCH_HIDE_COL_headINGS | GETNBRANCH_HIDE_ROW_headINGS
| GETNBRANCH_FIT_COL_WIDTH | GETNBRANCH_FIT_ROW_HEIGHT; // table format
// report tree 1
Tree trReport1;
trReport1.Report.ID = nID++; // report id
trReport1.Report.SetAttribute(STR_LABEL_ATTRIB, "Descriptive Stats Report"); // report title
trReport1.Report.SetAttribute(TREE_Table, nTableFormat | GETNBRANCH_OPEN); // open this node
trReport1.Report.Table1.ID = nID++; // table 1: show input data
trReport1.Report.Table1.SetAttribute(STR_LABEL_ATTRIB, "Input Data"); // table title
trReport1.Report.Table1.SetAttribute(TREE_Table, nTableFormat | GETNBRANCH_TRANSPOSE); // transpose this table
trReport1.Report.Table1.C1.ID = nID++; // column 1
trReport1.Report.Table1.C1.SetAttribute(STR_LABEL_ATTRIB, "X(" + colX.GetName() + ")"); // column label
trReport1.Report.Table1.C1.dVals = vX; // values
trReport1.Report.Table1.C2.ID = nID++; // column 2
trReport1.Report.Table1.C2.SetAttribute(STR_LABEL_ATTRIB, "Y(" + colY.GetName() + ")");
trReport1.Report.Table1.C2.dVals = vY; // values
trReport1.Report.Table2.ID = nID++; // table 2: show output results
trReport1.Report.Table2.SetAttribute(STR_LABEL_ATTRIB, "Stats Results"); // table title
trReport1.Report.Table2.SetAttribute(TREE_Table, nTableFormat | GETNBRANCH_OPEN); // open this node
trReport1.Report.Table2.R1.ID = nID++; // row 1
trReport1.Report.Table2.R1.SetAttribute(STR_LABEL_ATTRIB, "Results"); // row label
int nColIDBase = 10000; // base column id
trReport1.Report.Table2.R1.C1.ID = nColIDBase + 1; // row 1 column 1
trReport1.Report.Table2.R1.C1.SetAttribute(STR_LABEL_ATTRIB, "N Total"); // column label
trReport1.Report.Table2.R1.C1.dVal = trResult.N.dVal; // set value
trReport1.Report.Table2.R1.C2.ID = nColIDBase + 2; // row 1 column 2
trReport1.Report.Table2.R1.C2.SetAttribute(STR_LABEL_ATTRIB, "Sum"); // column label
trReport1.Report.Table2.R1.C2.dVal = trResult.sum.dVal; // set value
trReport1.Report.Table2.R1.C3.ID = nColIDBase + 3; // row 1 column 3
trReport1.Report.Table2.R1.C3.SetAttribute(STR_LABEL_ATTRIB, "Minimum"); // column label
trReport1.Report.Table2.R1.C3.dVal = trResult.min.dVal; // set value
trReport1.Report.Table2.R1.C4.ID = nColIDBase + 4; // row 1 column 4
trReport1.Report.Table2.R1.C4.SetAttribute(STR_LABEL_ATTRIB, "Maximum"); // column label
trReport1.Report.Table2.R1.C4.dVal = trResult.max.dVal; // set value
trReport1.Report.Table2.R1.C5.ID = nColIDBase + 5; // row 1 column 5
trReport1.Report.Table2.R1.C5.SetAttribute(STR_LABEL_ATTRIB, "Mean"); // column label
trReport1.Report.Table2.R1.C5.dVal = trResult.mean.dVal; // set value
trReport1.Report.Table2.R1.C6.ID = nColIDBase + 6; // row 1 column 6
trReport1.Report.Table2.R1.C6.SetAttribute(STR_LABEL_ATTRIB, "Median"); // column label
trReport1.Report.Table2.R1.C6.dVal = trResult.median.dVal; // set value
trReport1.Report.Table2.R1.C7.ID = nColIDBase + 7; // row 1 column 7
trReport1.Report.Table2.R1.C7.SetAttribute(STR_LABEL_ATTRIB, "Standard Deviation"); // column label
trReport1.Report.Table2.R1.C7.dVal = trResult.sd.dVal; // set value
GraphPage gp;
gp.Create(); // create a graph page
if(!gp)
return;
GraphLayer gl = gp.Layers(0); // get the graph layer in the graph page
if(!gl)
return;
DataRange dr; // data range with column A and column D
dr.Add("X", wks, 0, 0, -1, 0);
dr.Add("Y", wks, 0, 3, -1, 3);
int nn = gl.AddPlot(dr, IDM_PLOT_LINE); // add plot to graph layer
if(nn == -1)
return;
gl.Rescale(); // rescale graph layer
trReport1.Report.Table3.ID = nID++; // table 3: show graph
trReport1.Report.Table3.SetAttribute(STR_LABEL_ATTRIB, "Graphs"); // table title
// open this node and transpose this table
trReport1.Report.Table3.SetAttribute(TREE_Table, nTableFormat | GETNBRANCH_OPEN | GETNBRANCH_TRANSPOSE);
trReport1.Report.Table3.C1.ID = nID++; // column 1
trReport1.Report.Table3.C1.strVal = gp.GetUID(true); // set value with the unique ID of the graph page
trReport1.Report.Table3.C1.SetAttribute(STR_LABEL_ATTRIB, gp.GetName()); // column label
trReport1.Report.Table3.C1.SetAttribute(TREE_Control, ONODETYPE_EMBED_GRAPH); // embedded graph
WorksheetPage wp = wks.GetPage(); // get the worksheet page of the active worksheet
if(!wp)
return;
DWORD dwOptions = WP_SHEET_HIERARCHY | CREATE_NO_DEFAULT_TEMPLATE;
int n1 = wp.AddLayer("Hierarchical Sheet Report", dwOptions); // add a new worksheet
if(n1<0)
return;
Worksheet wksReport = wp.Layers(n1); // get the added new worksheet
if(wksReport.SetReportTree(trReport1.Report)<0) // set report tree to the worksheet
{
out_str("Failed to set report tree.\n");
return;
}
wksReport.AutoSize();
// report tree 2
Tree trReport2;
trReport2.Report.ID = nID++; // report id
trReport2.Report.SetAttribute(STR_LABEL_ATTRIB, "Descriptive Stats Report"); // report title
trReport2.Report.SetAttribute(TREE_Table, GETNBRANCH_FIT_COL_WIDTH | GETNBRANCH_FIT_ROW_HEIGHT); // fit column width and row height
trReport2.Report.Table.ID = nID++; // table
trReport2.Report.Table.SetAttribute(STR_LABEL_ATTRIB, "Stats Results"); // table title
trReport2.Report.Table.SetAttribute(TREE_Table, GETNBRANCH_FIT_COL_WIDTH | GETNBRANCH_FIT_ROW_HEIGHT | GETNBRANCH_TRANSPOSE);
trReport2.Report.Table.C1.ID = nID++; // column 1
trReport2.Report.Table.C1.SetAttribute(STR_LABEL_ATTRIB, "Input X");
trReport2.Report.Table.C1.SetAttribute(STR_COL_DESIGNATION_ATTRIB, OKDATAOBJ_DESIGNATION_X); // set designation
trReport2.Report.Table.C2.ID = nID++; // column 2
trReport2.Report.Table.C2.SetAttribute(STR_LABEL_ATTRIB, "Input Y");
trReport2.Report.Table.C2.SetAttribute(STR_COL_DESIGNATION_ATTRIB, OKDATAOBJ_DESIGNATION_Y);
trReport2.Report.Table.C3.ID = nID++; // column 3
trReport2.Report.Table.C3.SetAttribute(STR_LABEL_ATTRIB, "N Total");
trReport2.Report.Table.C3.SetAttribute(STR_COL_DESIGNATION_ATTRIB, OKDATAOBJ_DESIGNATION_Y);
trReport2.Report.Table.C4.ID = nID++; // column 4
trReport2.Report.Table.C4.SetAttribute(STR_LABEL_ATTRIB, "Sum");
trReport2.Report.Table.C4.SetAttribute(STR_COL_DESIGNATION_ATTRIB, OKDATAOBJ_DESIGNATION_Y);
trReport2.Report.Table.C5.ID = nID++; // column 5
trReport2.Report.Table.C5.SetAttribute(STR_LABEL_ATTRIB, "Minimum");
trReport2.Report.Table.C5.SetAttribute(STR_COL_DESIGNATION_ATTRIB, OKDATAOBJ_DESIGNATION_Y);
trReport2.Report.Table.C6.ID = nID++; // column 6
trReport2.Report.Table.C6.SetAttribute(STR_LABEL_ATTRIB, "Maximum");
trReport2.Report.Table.C6.SetAttribute(STR_COL_DESIGNATION_ATTRIB, OKDATAOBJ_DESIGNATION_Y);
trReport2.Report.Table.C7.ID = nID++; // column 7
trReport2.Report.Table.C7.SetAttribute(STR_LABEL_ATTRIB, "Mean");
trReport2.Report.Table.C7.SetAttribute(STR_COL_DESIGNATION_ATTRIB, OKDATAOBJ_DESIGNATION_Y);
trReport2.Report.Table.C8.ID = nID++; // column 8
trReport2.Report.Table.C8.SetAttribute(STR_LABEL_ATTRIB, "Median");
trReport2.Report.Table.C8.SetAttribute(STR_COL_DESIGNATION_ATTRIB, OKDATAOBJ_DESIGNATION_Y);
trReport2.Report.Table.C9.ID = nID++; // column 9
trReport2.Report.Table.C9.SetAttribute(STR_LABEL_ATTRIB, "Standard Deviation");
trReport2.Report.Table.C9.SetAttribute(STR_COL_DESIGNATION_ATTRIB, OKDATAOBJ_DESIGNATION_Y);
// set values to those columns
trReport2.Report.Table.C1.dVals = vX;
trReport2.Report.Table.C2.dVals = vY;
trReport2.Report.Table.C3.dVal = trResult.N.dVal;
trReport2.Report.Table.C4.dVal = trResult.sum.dVal;
trReport2.Report.Table.C5.dVal = trResult.min.dVal;
trReport2.Report.Table.C6.dVal = trResult.max.dVal;
trReport2.Report.Table.C7.dVal = trResult.mean.dVal;
trReport2.Report.Table.C8.dVal = trResult.median.dVal;
trReport2.Report.Table.C9.dVal = trResult.sd.dVal;
int n2 = wp.AddLayer("Flat Sheet Report"); // add a new worksheet
if(n2<0)
return;
Worksheet wksReport2 = wp.Layers(n2); // get the added new worksheet
if(wksReport2.SetReportTree(trReport2.Report)<0) // set report tree to worksheet
{
out_str("Failed to set report tree.\n");
return;
}
wksReport2.AutoSize();
}
|