これは非常に驚異的な複雑なスクリプトです。
要約されたテーブルを作ってそこからプロットするだけではいけないことは確かですか?
CCBでは、テーブルから制限をロードできます。必要に応じて、要約表を作成してから、制限の表を作成することもできます。片方からプロットし、もう片方から制限を取得しますか?
以下のように同じJSLスクリプトで2つのループを使用しながら、1つは異なる "ToGraphBy"によって2変量グラフを描画することで、もう1つは異なる色( "フラグ"による)を持つこれらのグラフにスプラインを追加することです。ただし、2番目のループは "ToGraphBy"で区切られた各セグメントではなく、すべてのテーブルから "フラグ"をカウントするため、各セグメントチャートのポイントの色がスプラインの色と一致しなくなります。このスクリプトを少し大きくしてより合理的にするために誰が私たちを助けることができますか?
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)
)
);
