cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
See how to use to use Text Explorer to glean valuable information from text data at April 25 webinar.
Choose Language Hide Translation Bar
View Original Published Thread

Difference of lines

BHarris
Level VI

Suppose I have two lines, distance vs. time for two different moving objects.  The time measurements for object 1 and object 2 are at arbitrary times, i.e., the measured times for object 1 aren't the same times as provided for object 2.

 

Is there a way in Graph Builder to plot the *difference* between those curves vs. time?

12 REPLIES 12
XanGregg
Staff


Re: Difference of lines

Here's a low scripting alternative using the Save Formula command available in the red triangle menu for a Smoother or Line of Fit element.

XanGregg_0-1631541150941.png

 

Starting with Craige's ab.jmp table using Overlay to get two lines/curves, use Save Formula to get a new column with a formula that looks like:

 

If( :Source Table == "a", Spline Eval( ... ), :Source Table == "b", Spline Eval( ... ), . ))

 

Go into the Formula Editor for the new column and change the formula to subtract the two Spline expressions:

 

Spline Eval( ... ) - Spline Eval( ... )

 

And use that as the Y in GB.

XanGregg_1-1631541420331.png

 

BHarris
Level VI


Re: Difference of lines

Due to some bizarre licensing problems* I was only finally able to try this today.  It works quite well, very elegant!

 

Two questions:

 

  1. Is JSL powerful enough to make that formula change for me?  So that whole process could be scripted into a .jsl script?
  2. I expected the difference curve to update as I changed the lambda on the smoother but it doesn't.  Looking deeper I see that the "Save formula" is actually saving off the spline parameters, not maintaining a connection back to the actual splines being used.  I presume the latter is not reasonably possible?

Thanks again!

 

 

****************************************

* I was finally forced to update my Mac to 11.6, not realizing that JMP v14 wouldn't work on it.  So I requested v16 through my company, and it literally took months after getting a PO to actually get a v16 license for me.  There was tons of back-and-forth with tax certs and address changes and PO problems.  I can't tell if the problem was my company's supply-chain or JMP/SAS's sales department, but getting a license if you have money in hand really shouldn't be that hard.

 

hogi
Level XII


Re: Difference of lines

As a combination of the different suggestions, you could also use a simple interpolate() - interpolate() to calculate the difference and then use the lambda setting of the smoother plot to tune the granularity of the curve.

hogi_0-1698514312749.png

Open( "$DOWNLOADS/ab.jmp" );
New Column( "diff",
	Formula(
		rowsA = As Constant( Current Data Table() << get rows where( :Source Table == "a" ) );
		rowsB = As Constant( Current Data Table() << get rows where( :Source Table == "b" ) );
		xA = As Constant( :time[rowsA] );
		xB = As Constant( :time[rowsB] );
		posA = As Constant( :position[rowsA] );
		posB = As Constant( :position[rowsB] );
		If( Min( xA ) <= :time <= Max( xA ) & Min( xB ) <= :time <= Max( xB ),
			Interpolate( :time, xA, posA ) - Interpolate( :time, xB, posB ),
			.
		);
	)
);
Graph Builder(
	Variables( X( :time ), Y( :diff ), Y( :position ), Overlay( :Source Table ) ),
	Elements( Position( 1, 1 ), Points( X, Y, Overlay( 0 ), Legend( 1 ) ), Smoother( X, Y, Overlay( 0 ), Lambda( 0.02 ) ) ),
	Elements( Position( 1, 2 ), Points( X, Y ), Smoother( X, Y ) )
);