- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Difference of lines
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?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
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.
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
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:
- Is JSL powerful enough to make that formula change for me? So that whole process could be scripted into a .jsl script?
- 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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
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.
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 ) )
);
- « Previous
-
- 1
- 2
- Next »