Während Sie zwei Schleifen in demselben JSL-Skript wie unten verwenden, besteht eine darin, bivariate Diagramme mit unterschiedlichen "ToGraphBy" zu zeichnen, eine andere besteht darin, Spline für diese Diagramme mit unterschiedlicher Farbe (durch "Flag") hinzuzufügen. Da die zweite Schleife jedoch "Flag" aus allen Tabellen zählt, anstatt jedes durch "ToGraphBy" getrennte Segment, führt dies dazu, dass die Punktfarbe jedes Segments nicht mit der Spline-Farbe übereinstimmt. Wer kann uns helfen, dieses Skript ein wenig zu verändern, um es vernünftiger zu machen?
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)
)
);

Dies ist ein ziemlich phänomenal komplexes Stück Skript.
Sind Sie sicher, dass Sie nicht einfach eine zusammengefasste Tabelle erstellen und von dort aus plotten können?
In CCB können Sie Limits aus einer Tabelle laden. Bei Bedarf können Sie eine zusammenfassende Tabelle und dann auch eine Grenzwerttabelle erstellen. Plotten Sie von einem und erhalten Sie Grenzen von dem anderen, vielleicht?