if I only have a photo graph which is a plot of some data, but not have a its original raw data. can help to suggest how to generate a data set use this graph?
My purpose is to generate a data set that can represent its profile, and join with others then can do a new plot to combine all togehter.
can use jmp script or through its basic function tools? thanks a lot.

Here is a thread with another example of this-- Can JSL restore the value of the curve?
Cheers,
Brady
I think there is a lot of unknown information, so there may not be any great answers.
- is this a smoothed curve?
- how many data points were there?
- what resolution did the data have?
Perhaps just using the cross hair tool and a new data table would be good enough for 10 to 20 points.
If you believe there are 100s of valid points, on the plotted line, you can recover them with a bit of JSL. Read the comments; study the results and make sure they make sense.
//
// this is NOT a general solution; it is tailored for this particular bitmap
//
img = Open( "https://us.v-cdn.net/6038925/uploads/images/33300i4DE1ABDC20B74778/qspringleaf_1-1622996228420.png" );
New Window( "Make sure this is the right image", img ); // view the img
// work with r,g,b arrays of pixel data...
{r, g, b} = img << getpixels( "rgb" );
// https://community.jmp.com/t5/JSL-Cookbook/Using-Loc-with-a-2D-Matrix/ta-p/195207
// explains the 1D vs 2D matrix/loc stuff...
nr = N Rows( b );
nc = N Cols( b );
// using the MS paint eyedropper, the blue-est of the pixels in the blue line have rgb=(56,89,165)
bluelocs = (Loc( r < (60 / 255) & g < (95 / 255) & b > (160 / 255) ) - 1); // bluelocs is a matrix of 1D indexes (0-based)
blueRowlocs = Floor( (bluelocs) / nc ) + 1; // nc is the number of columns in the 2D pixmat
blueCollocs = Mod( (bluelocs), nc ) + 1; // rowlocs and collocs are 2D indexes (1-based)
// the grid lines have rgb=(215,215,215) (the frame is darker, 165,165,165)
gridlocs = (Loc( r == (215 / 255) & g == (215 / 255) & b == (215 / 255) ) - 1);
gridRowlocs = Floor( (gridlocs) / nc ) + 1; // nc is the number of columns in the 2D pixmat
gridCollocs = Mod( (gridlocs), nc ) + 1; // rowlocs and collocs are 2D indexes (1-based)
// locate the top, bottom, left, and right gray grid lines; their values are hard-coded below...
MINRAD = 5;
MAXRAD = 140;
MINTHK = 595;
MAXTHK = 715;
// CAUTION: this works because there is not a lot of other gray pixels of this shade.
// the while-loop removes a couple that get in the way.
// a different source graph will have different problems.
dtGRAY = As Table( gridRowlocs || gridCollocs, <<COLUMNNAMES></COLUMNNAMES>
Graph of recovered data from blue lineGraph of recovered data from blue lineGraph of recovered data from blue line
This works on the original graph you uploaded, not on the reduced resolution graph you most likely see in the discussion.