3.3.5 Symbol PlotTo run the following examples, please run the LabTalk script below first to prepare a new workbook with the "Group.DAT" data. Make sure that the new created workbook should be active before running each example.
newbook; // create a new workbook
fname$ = system.path.program$ + "Samples\Graphing\Group.DAT"; // file path
impasc; // import the file to the new workbook
Simple Scatter Plot
Minimum Origin Version Required: Origin 8 SR2
This example is used to create a simple scatter plot with some changes on the symbol type, size, color, etc..
void simple_scatter_plot()
{
Worksheet wks = Project.ActiveLayer(); // get worksheet with group.dat data
if( !wks )
{
out_str("Please activate worksheet with group.dat data!");
return;
}
// plot simple scatter plot
DataRange dr;
dr.Add(wks, 0, "X");
dr.Add(wks, 1, "Y");
GraphPage gp;
gp.Create("scatter"); // create scatter graph
if( !gp )
{
out_str("Failed to create scatter plot!");
return;
}
GraphLayer gl = gp.Layers(0);
int nPlot = gl.AddPlot(dr, IDM_PLOT_SCATTER); // add plot to layer
if( nPlot >= 0 ) // if add plot successfully
{
DataPlot dp = gl.DataPlots(0);
dp.SetSymbol(12); // set symbol shape: empty circle
dp.SetColor(SYSCOLOR_BLUE); // set color: blue
Tree trFormat;
trFormat.Root.Symbol.Size.nVal = 12; // set size: 12
trFormat.Root.DropLines.Vertical.nVal = true; // add vertical droplines
if( 0 == dp.UpdateThemeIDs(trFormat.Root) )
{
dp.ApplyFormat(trFormat, true, true);
}
gl.Rescale();
}
}
Scatter Central Plot
Minimum Origin Version Required: Origin 8 SR5
This example is used to create a scatter central plot with some changes on the symbol color and shape.
void scatter_central_plot()
{
Worksheet wks = Project.ActiveLayer(); // get worksheet with group.dat data
if( !wks )
{
out_str("Please activate worksheet with group.dat data!");
return;
}
// plot scatter central plot
DataRange dr;
dr.Add(wks, 0, "X");
dr.Add(wks, 1, "Y");
GraphPage gp;
gp.Create("ScatterCentral"); // create scatter central graph
if( !gp )
{
out_str("Failed to create scatter central plot!");
return;
}
GraphLayer gl = gp.Layers(0);
int nPlot = gl.AddPlot(dr, IDM_PLOT_SCATTER); // add plot to layer
if( nPlot >= 0 ) // if add plot successfully
{
DataPlot dp = gl.DataPlots(0);
dp.SetSymbol(110); // set symbol shape: sphere
dp.SetColor(SYSCOLOR_RED); // set color: red
gl.Rescale();
}
}
Y Error Plot
Minimum Origin Version Required: Origin 8.1 SR1
This example is used to create a Y error plot. It also changes some formats of the symbols and error bars.
void y_error_plot()
{
Worksheet wks = Project.ActiveLayer(); // get worksheet with group.dat data
if( !wks )
{
out_str("Please activate worksheet with group.dat data!");
return;
}
// plot simple scatter plot
DataRange dr;
dr.Add(wks, 0, "X"); // X column
dr.Add(wks, 1, "Y"); // Y column
dr.Add(wks, 3, "ED"); // Error column
GraphPage gp;
gp.Create("Errbar"); // create error bar
if( !gp )
{
out_str("Failed to create scatter central plot!");
return;
}
GraphLayer gl = gp.Layers(0);
int nPlot = gl.AddPlot(dr, IDM_PLOT_SCATTER); // add plot to layer
if( nPlot >= 0 ) // if add plot successfully
{
for(int nPlot=0; nPlot<gl.DataPlots.Count(); nPlot++) // set format for plots in the layer
{
DataPlot dp;
switch (nPlot)
{
case 0:
dp = gl.DataPlots(0); // scatter plot
dp.SetColor(SYSCOLOR_RED); // set color
Column colSize;
colSize = wks.Columns(2); // column C
dp.SetModifier(COLDESIG_SIZE, colSize); // column C as size
Tree trFormat;
trFormat.Root.Symbol.Scale.dVal = 2.; // scaling factor
trFormat.Root.Symbol.Shape.nVal = 5; // symbol shape: diamond
trFormat.Root.Symbol.Interior.nVal = 1; // interior: empty
if(0 == dp.UpdateThemeIDs(trFormat.Root))
dp.ApplyFormat(trFormat, true, true);
break;
case 1:
dp = gl.DataPlots(1); // error bar
Tree trFormat;
trFormat.Root.Line.Color.nVal = SYSCOLOR_BLUE; // set color
trFormat.Root.Line.Width.dVal = 2.; // set line width
if(0 == dp.UpdateThemeIDs(trFormat.Root))
dp.ApplyFormat(trFormat, true, true); // apply theme tree
break;
}
}
gl.Rescale();
}
}
XY Error Plot
Minimum Origin Version Required: Origin 8 SR1
This example is capable of creating a scatter plot with X and Y error bars. The formats of symbols, X and Y error bars are modified too, including symbol shape, size, color, width of error bar, etc..
void xy_error_plot()
{
Worksheet wks = Project.ActiveLayer(); // get worksheet with group.dat data
if( !wks )
{
out_str("Please activate worksheet with group.dat data!");
return;
}
Curve crv(wks, 0, 1);
GraphPage gp;
gp.Create("Scatter"); // create scatter
if( !gp )
{
out_str("Failed to create scatter central plot!");
return;
}
GraphLayer gl = gp.Layers(0);
int nScatterPlot = gl.AddPlot(crv, IDM_PLOT_SCATTER); // add plot to layer
if( nScatterPlot >= 0 ) // if add plot successfully
{
Column colXErrBar(wks, 2); // column C
int nXErrPlot = gl.AddXErrBar(crv, colXErrBar); // add column C as X error
Column colYErrBar(wks, 3); // column D
int nYErrPlot = gl.AddErrBar(crv, colYErrBar); // add column D as Y error
if( nXErrPlot >= 0 && nYErrPlot >= 0)
{
for(int nPlot=0; nPlot<gl.DataPlots.Count(); nPlot++)
{
DataPlot dp;
switch (nPlot)
{
case 0: // set format for scatter plot
dp = gl.DataPlots(0);
dp.SetColor(SYSCOLOR_RED); // set color
Tree trFormat;
trFormat.Root.Symbol.Shape.nVal = 5; // set shape: diamond
trFormat.Root.Symbol.Interior.nVal = 1; // interior: empty
trFormat.Root.Symbol.Size.nVal = 12; // set size: 12
if(0 == dp.UpdateThemeIDs(trFormat.Root))
dp.ApplyFormat(trFormat, true, true); // apply theme format tree
break;
case 1: // set format for X error bar
dp = gl.DataPlots(1); // X error bar
Tree trFormat;
trFormat.Root.Line.Color.nVal = SYSCOLOR_MAGENTA; // set color
trFormat.Root.Line.Width.dVal = 2.; // set line width
if(0 == dp.UpdateThemeIDs(trFormat.Root))
dp.ApplyFormat(trFormat, true, true); // apply theme tree
break;
case 2: // set format for Y error bar
dp = gl.DataPlots(2); // Y error bar
Tree trFormat;
trFormat.Root.Line.Color.nVal = SYSCOLOR_BLUE; // set color
trFormat.Root.Line.Width.dVal = 2.; // set line width
if(0 == dp.UpdateThemeIDs(trFormat.Root))
dp.ApplyFormat(trFormat, true, true); // apply theme tree
break;
}
}
}
gl.Rescale();
}
}
Bubble Plot
Minimum Origin Version Required: Origin 8.1 SR1
This example is used to create a bubble plot. Mean while, the sizes and colors of the bubbles are set by existing columns.
void bubble_plot()
{
Worksheet wks = Project.ActiveLayer();
if( !wks )
{
out_str("Pls activate worksheet with group.dat data");
return;
}
// plot bubble
DataRange dr;
dr.Add(wks, 0, "X"); // X column
dr.Add(wks, 1, "Y"); // Y column
GraphPage gp;
gp.Create("bubble"); // create bubble plot
GraphLayer gl = Project.ActiveLayer();
int nPlot = gl.AddPlot(dr, IDM_PLOT_SCATTER);
if( nPlot >= 0 ) // add plot successfully
{
DataPlot dp = gl.DataPlots(0);
Column colSize = wks.Columns(2);
dp.SetModifier(COLDESIG_SIZE, colSize); // column C as Size
Column colColor = wks.Columns(3);
dp.SetModifier(COLDESIG_COLOR, colColor); // column D as Color Map
gl.Rescale();
}
}
|