Share your ideas for the JMP Scripting Unsession at Discovery Summit by September 17th. We hope to see you there!
Choose Language Hide Translation Bar
Highlighted
yu629xiao
Level II

JSL for Loop question

While using two Loop in same JSL script like below, One is to draw Bivariate chart by different "ToGraphBy" another one is to add Spline for those charts with different Color (by "Flag") . however, as second Loop counts "Flag"  from all table  instead of each separated segment by "ToGraphBy" , that cause each segment charts points color mismatch with Spline color. Who can help us to modify this script a little big to make it more reasonable ?

 

 

dt = Current Data Table();
Summarize( dt, byVals = by( :TOGRAPHBY ) );
Summarize( dt, ByFlag = by(:Flag ) );
Bi = Bivariate( X( :LOT_DATA_COLLECT_DATE ), Y( :CHART_VALUE ), by( :TOGRAPHBY ));

For( i = 1, i <= N Items( byVals ), i++,
LCL = :LO_CONTROL_LMT[(dt << get rows where( :TOGRAPHBY == byVals[i] ))[1]];
UCL = :UP_CONTROL_LMT[(dt << get rows where( :TOGRAPHBY == byVals[i] ))[1]];
TGT = :TARGET[(dt << get rows where( :TOGRAPHBY == byVals[i] ))[1]];

chartMin = Min( :CHART_VALUE[dt << get rows where( :TOGRAPHBY == byVals[i])]);
chartMax = Max( :CHART_VALUE[dt << get rows where( :TOGRAPHBY == byVals[i])]);

If(LCL < chartMin, chartMin = LCL );
If(UCL > chartMax, chartMax = UCL );

chartRange5% = (chartMax - ChartMin)/5;
Gridset=(UCL - LCL)/5;

chartMin = chartMin - chartRange5%;
chartMax = chartMax + chartRange5%;

Eval(
Substitute(
Expr(
Bi << SendToByGroup(
{:TOGRAPHBY == __byVals__},
SendToReport(
Dispatch(
{},
"1",
ScaleBox,
{Format( "y/m/d h:m:s", 22, 0 ), Min(),
Max( ), Interval( "Day" ), Inc( 1 ), Minor Ticks( 0 ),
Label Row( Label Orientation( "Vertical" ) )}
),
Dispatch(
{},
"2",
ScaleBox,
{Min( __min__ ), Max( __max__ ), Inc( __Grid__ ), Minor Ticks( 1 ), Label Row( Show Major Grid( 1 )),
Add Ref Line( __LCL__, "Solid", "Medium Dark Red", "LCL", 1 ),
Add Ref Line( __TAR__, "Solid", "Blue", "Target", 2 ),
Add Ref Line( __UCL__, "Solid", "Medium Dark Red", "UCL", 1 )}
),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Frame Size( 900, 600 ),Marker size (2), Row Legend(
Flag,
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 1 ),
Marker Theme( "Standard" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
)
),
Expr( __byVals__ ), byVals[i],
Expr( __UCL__ ), UCL,
Expr( __LCL__ ), LCL,
Expr( __min__ ), chartMin,
Expr( __max__ ), chartMax,
Expr( __Grid__ ), Gridset,
Expr( __TAR__ ), TGT
),
);
);
For( i = 1, i <= N Items( ByFlag ), i++,

bi << Fit Where(
:Flag == ByFlag[i],
Fit Spline( 1e16)
)

);

 

 

Capture.PNG

1 REPLY 1
Highlighted
Byron_JMP
Staff

Re: JSL for Loop question

this is a pretty phenomenal complex bit of script.

are you sure you can't just make a summarized table and plot from there.

in CCB you can load limits from a table. If you need to you could make a summary table and then also make a table of limits. Plot from one, and get limits from the other, maybe?

JMP Systems Engineer, Pharm and BioPharm Sciences
Article Labels

    There are no labels assigned to this post.