2.11.2 Exporting Graphs

Here are three examples of exporting graphs using the X-Function expGraph called from LabTalk:

Export a Graph with Specific Width and Resolution (DPI)

Export a graph as an image using the expGraph X-Function. The image size options are stored in the nodes of tree variable named tr1, while resolution options (for all raster type images) are stored in a tree named tr2.

One common application is to export a graph to a desired image format specifying both the width of the image and the resolution. For example, consider a journal that requires, for a two-column article, that graphs be sent as high-resolution (1200 DPI), *.tif files that are 3.2 inches wide:

// Export the active graph window to D:\TestImages\TEST.TIF.
// Width = 3.2 in, Resolution = 1200 DPI

expGraph type:=tif path:="D:\TestImages" filename:="TEST" 
	 tr1.unit:=0
	 tr1.width:=3.2
	 tr2.tif.dotsperinch:=1200;

Possible values for tr1.unit are:

  • 0 = inch
  • 1 = cm
  • 2 = pixel
  • 3 = page ratio

Note: this is a good example of accessing data stored in a tree structure to specify a particular type of output. The full documentation for tr1 can be found in the online and product (CHM) help.

Exporting All Graphs in the Project

Exporting all of the graphs from an Origin Project can be achieved by combining the doc -e command, which loops over all specified objects in a project with the expGraph X-Function.

For example, to export all graphs in the current project as a bitmap (BMP) image, as above:

doc -e P
{
  // %H is a string register that holds the name of the active window.
  expGraph type:=bmp path:="d:\TestImages" filename:=%H 
           tr1.unit:=2  
           tr1.width:=640;
}

Several examples of doc -e can be found in Looping Over Objects.

Exporting Graph with Path and File Name

The string registers, %G and %X, hold the current project file name and path. Combine with the label command, you can place these information on page while exporting a graph. For example:

// Path of the project
string proPath$ = system.path.program$ + "Samples\Graphing\Multi-Curve Graphs.opj";
// Open the project
doc -o %(proPath$);
// Add file path and name to graph
win -a Graph1;
label -s -px 0 0 -n ForPrintOnly \v(%X%G.opj);
// Export graph to disk D
expGraph type:=png filename:=%H path:=D:\;
// Delete the file path and name 
label -r ForPrintOnly;