이것은 매우 경이로운 복잡한 스크립트입니다.
당신은 당신이 거기에서 요약 된 표를 만들고 플롯 할 수 없다고 확신합니까?
CCB에서는 테이블에서 한계를로드 할 수 있습니다. 필요한 경우 요약 테이블을 만든 다음 제한 테이블을 만들 수도 있습니다. 하나에서 플롯하고 다른 하나에서 한계를 얻습니다.
아래와 같은 JSL 스크립트에서 두 개의 루프를 사용하는 동안 하나는 다른 "ToGraphBy"로 이변 량 차트를 그리는 것입니다. 다른 하나는 "Flag"에 의해 다른 색상의 차트에 대해 스플라인을 추가하는 것입니다. 그러나 두 번째 루프는 "ToGraphBy"에 의해 분리 된 각 세그먼트 대신 모든 테이블에서 "Flag"를 계산하므로 각 세그먼트 차트 포인트의 색상이 스플라인 색상과 일치하지 않습니다. 이 스크립트를보다 합리적으로 만들기 위해이 스크립트를 약간 크게 수정하는 데 누가 도움을 줄 수 있습니까?
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)
)
);
