2.5.41 pickpts

Brief Information

Pick XY data points from a 2D graph.

Additional Information

Minimum Origin Version Required: 8.1 SR3

Command Line Usage

1. pickpts npts:=3;
2. pickpts gp:=[Graph2] npts:=5 plot:=<new>;


Input Graph gp



Specifies the graph to pick points from
Number of Points to Get npts



Specifies the number of points to pick from the input graph
Reader Type type



Specifies the type for picking points

Option list:

  • data:Data Reader
    Picks points in Data Reader mode. It only picks up data points existed in the source worksheet.
  • screen:Screen Reader
    Picks points in Screen Reader mode. It allows you to pick up points located anywhere on the graph and reads their XY coordinates from graph.
X Coordinates x



Specifies the output range for picked points’ X coordinates.
Y Coordinates y



Specifies the output range for picked points’ Y coordinates
Plot Name plot



Specifies the output range for plot name(s) of the picked data points. It is accessible only when Data Reader is selected for Reader Type.
Point Index index



Specifies the output range for data points’ indices. It is accessible only when Data Reader is selected for Reader Type.


This X-Function allows you to pick XY data points from a graph using the Data Reader type or Screen Reader type and gets related coordinate information.

Starting with Origin 2018 SR0, there is a GUI tool that uses the pickpts X-Function. The tool is opened by right-clicking on the data point tooltip that shows when you mouse over a data point in a line, scatter, line + symbol or column/bar chart.


The following scripts shows how to pick data points from multiple layers.

Output pickpts data to new sheet

// create a new worksheet window based on ORIGIN.OTW
win -t; 
// fill the worksheet with row numbers in the first two columns
col(A) = data(1,10); 
col(B) = data(1,10);
// fill the third and forth columns with normal random numbers
col(C) = Normal(10);
col(D) = Normal(10); 

// highlight second to forth columns
worksheet -s 2 0 4 0; 
// plot a 3Ys_Y-Y-Y graph from the selected three columns

// pick up 5 points from graph, and output their XY coordinates, plot names and indices
pickpts npts:=5 plot:=<new> index:=<new>;

With the graph active, double-click on data points of interest to select them:

Pickpts 01.gif

After the selection is done, the results are automatically output to a new worksheet:

Pickpts 02.gif

Output data to existing sheet

In this example, we have a three panel (layer) graph, with each layer containing a plot of Assymmetric Gaussian data. We use pickpts to pick the peak point in each and output the result to Book2. Note that we are using a variable of type StringArray to store and output the plot names. Also, see StringArray (object).

Pickpts image2.png

// create datasets dsx and dsy
dataset dsx, dsy;

// create StringArray dsn
StringArray dsn;

// call the pickpts X-Function, use Data Reader to pick 3 points.
// Put X coordinates in dsx, y coordinates in dsy, point index in dsi, and plot name in dsn
pickpts npts:=3 type:=data x:=dsx y:=dsy index:=dsi plot:=dsn;

// define output sheet range with 4 columns
range wks = [Book2]Sheet1!;

// assign long names to each column
wks.col1.lname$ = X Coordinate;
wks.col2.lname$ = Y Coordinate;
wks.col3.lname$ = Plot Name;
wks.col4.lname$ = Point Index;

// create range variables for each output variable
range aa = [Book2]1!1;
range bb = [Book2]1!2;
range cc = [Book2]1!3;
range dd = [Book2]1!4;

// output coordinate and index values to Book2
aa = dsx;
bb = dsy;
dd = dsi;

// copy StringArray dsn to range cc ([Book2]1!3;)
Note: Since Origin 2017 SR0, we can also use a variable of type Dataset to store and output the plot name. For instance, we can change the above example as follows:
  1. Create a Text & Numberic dataset dsn to store the plot name.
    //Create a Text & Numberic dataset instead of using StringArry
    dataset -a dsn;
  2. After pick the points, then output the plot name to Book2 directly.
    //Output the plot name directly instead of using the CopyTo method.
    cc = dsn;