3.3.5 Symbol Plot

To 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(); 
    }
}