JSL - テーブル上の汎用ディストリビューションおい、
テーブル上でヒストグラムを実行したいと考えています。
各テーブルの出力は「結果」列であり、「テスト名」で区切られています。
さまざまな「テスト名」を処理できる汎用コードが必要です。
私が試してみました:
dt1 = Open();
:result << Set Data Type( Numeric, "Continuous" );
:range_min << Set Name( "LSL" );
:range_max << Set Name( "USL" );
limits = dt1 << Summary( Group( :test_name ), Mean( Eval( "LSL" ) ), Mean( Eval( "USL" ) ), );
Current Data Table( limits );
rowsTest = limits[0, 1];
iMax = N Rows( limits );
Current Data Table( dt1 );
vl = V List Box( Text Box( "Spec Limits Script" ) );
For( i = 0, i < iMax, i++,
vv = V List Box(
Distribution(
Stack( 1 ),
Continuous Distribution( Column( :result ), Horizontal Layout( 1 ), Vertical( 0 ) ),
Where( :test_name == rowsTest[i] )
)
),
vl << append( vv )
);
newFit = New Window( "Spec Limits Collection", vl );
しかし、うまくいきませんでした。
これが正しいやり方なのでしょうか?
前もって感謝します。
Re: JSL - テーブル上の汎用ディストリビューション助けてくれてありがとう!
あと3つ問題があります....
1. 「グラフ ビルダー」を使用してオーバーレイ (マシン 1 とマシン 2 のテスト 1 としましょう) を行う必要がある場合。
私は同じことをしようとしていますが、成功しません:
For( i = 1, i <= N Rows( SummaryDT ), i++,
CurrentTest = Column( SummaryDT, 1 )[i];
CurrentMin = Column( SummaryDT, 2 )[i];
CurrentMax = Column( SummaryDT, 3 )[i];
NewMin = Column( SummaryDT, 4 )[i];
NewMax = Column( SummaryDT, 5 )[i];
CurrentStDev = Column( SummaryDT, 7 )[i];
CurBox = V List Box(
CurDist = StackedResults <<
Graph Builder(
Show Control Panel( 0 ),
Variables( X( :Result ), Page( :Test Name ), Overlay( :Facility ) ),
Elements( Histogram( X, Legend( 13 ) ) )
),
V List Box(
H List Box( Text Box( "Current Low: " ), Text Box( CurrentMin ), Text Box( " New Low: " ), Text Box( NewMin ) ),
(H List Box( Text Box( "Current High: " ), Text Box( CurrentMax ), Text Box( " New High: " ), Text Box( NewMax ) ))
)
);
(CurDist << report)[AxisBox( 1 )] << Min( Min( CurrentMin || NewMin ) - Abs( Min( CurrentMin || NewMin ) ) * 0.005 );
(CurDist << report)[AxisBox( 1 )] << Max( Max( CurrentMax || NewMax ) * 1.005 );
(CurDist << report)[AxisBox( 1 )] << Add Ref Line( CurrentMin, "Solid", blue, "Min", 1 );
(CurDist << report)[AxisBox( 1 )] << Add Ref Line( CurrentMax, "Solid", blue, "Max", 1 );
(CurDist << report)[AxisBox( 1 )] << Inc( CurrentStDev );
//(CurDist << report)[AxisBox( 2 )] << Show Major Grid( 1 );
//(CurDist << report)[AxisBox( 2 )] << Scale( "Log" );
(CurDist << report)[Outline Box( 1 )] << Set Title( "Test: " || CurrentTest );
MainContainer << append( CurBox );
);
2. 外れ値をより簡単に確認できるように、Y 軸を対数スケールでスケールしようとしていますが、正しく機能しません...
3. 「リスト ボックス」が非表示になっており、プロットを閉じたときにのみ表示されるのはなぜですか。
ありがとう!
Re: JSL - テーブル上の汎用ディストリビューションこれがコードです。お楽しみください:
dt = Current Data Table();
SummaryDT = dt << Summary( Group( :test_name, :range_min, :range_max ), Std Dev( :result ) );
win = New Window( "My Analysis", MainContainer = V List Box() );
For( i = 1, i <= N Rows( SummaryDT ), i++,
CurrentTest = Column( SummaryDT, 1 )[i];
CurrentMin = Column( SummaryDT, 2 )[i];
CurrentMax = Column( SummaryDT, 3 )[i];
CurrentStDev = Column( SummaryDT, 5 )[i];
CurBox = V List Box( CurDist = dt << Distribution( Continuous Distribution( Column( :result ),Horizontal Layout(1) ), Where( :test_name == CurrentTest ) ) );
(CurDist << report)[AxisBox(1)] << Max(Maximum(CurrentMax,(CurDist << report)[AxisBox(1)] << Get Max) + (CurrentMax-CurrentMin)*0.05);
(CurDist << report)[AxisBox(1)] << Min(Minimum(CurrentMin,(CurDist << report)[AxisBox(1)] << Get Min) - (CurrentMax-CurrentMin)*0.05);
(CurDist << report)[AxisBox(1)] << Add Ref Line( CurrentMin, "Solid", blue, "Min", 1 );
(CurDist << report)[AxisBox(1)] << Add Ref Line( CurrentMax, "Solid", blue, "Max", 1 );
(CurDist << report)[AxisBox(1)] << Inc(CurrentStDev);
(CurDist << report)[OutlineBox(1)] << Set Title("Test: " || CurrentTest);
MainContainer << append(CurBox);
);
close(SummaryDT,nosave);
(win << XPath("//TextBox[contains(./text(), 'Where')]")) << delete();
Re: JSL - テーブル上の汎用ディストリビューション興味があれば、テーブルを送ってください
tom.abramov@ald.co.il
ここにスクリプトを置きますRe: JSL - テーブル上の汎用ディストリビューションビン サイズのスケールを変更したり、各結果ウィンドウに LSL や USL などを追加したりする場合はどうすればよいでしょうか?
2 つの問題:
1. プロットのスケール ビンにプロットしたばかりのヒストグラムからシグマ値を取得するにはどうすればよいですか?
2. テスト名のカウンターを持たずに参照行を追加するにはどうすればよいですか?
事前にどうもありがとうございました!
「std」 - 統計テーブルの標準値です。
「???」- は「制限」テーブルの値です。
dt1 = Open();
:result << Set Data Type( Numeric, "Continuous" );
limits = dt1 << Summary( Group( :test_name ), Mean( Eval( "range_min" ) ), Mean( Eval( "range_max" ) ), );
Ntests = N Rows( limits );
vl = V List Box( Text Box( "Spec Limits Script" ) );
dt1 << Distribution(
Continuous Distribution( Column( :result ), Horizontal Layout( 1 ), Vertical( 0 ) ),
By( :test_name ),
SendToReport(
Dispatch(
{"result"},
"1",
ScaleBox,
{Min( 97.5173285198556 ), Max( 97.9576714801444 ), Inc( <U><STRONG>std</STRONG></U>), Minor Ticks( 0 ),
Add Ref Line( limits[<U><STRONG>???</STRONG></U>,3], "Solid", "Black", "", 1 ), Add Ref Line( limits[<U><STRONG>???</STRONG></U>,4], "Solid", "Black", "", 1 )}
)
)
);
Re: JSL - テーブル上の汎用ディストリビューションループなしで実行することもできます。
Distribution(
Continuous Distribution(
Column( :result ),
Horizontal Layout( 1 ),
Vertical( 0 )
),
By( :test_name )
);
Re: JSL - テーブル上の汎用ディストリビューションこんにちは、
いくつかの修正後のコードは次のとおりです。
dt1 = Open();
:result << Set Data Type( Numeric, "Continuous" );
:range_min << Set Name( "LSL" );
:range_max << Set Name( "USL" );
limits = dt1 << Summary( Group( :test_name ), Mean( Eval( "LSL" ) ), Mean( Eval( "USL" ) ), );
Ntests = NRows(limits);
vl = V List Box( Text Box( "Spec Limits Script" ) );
For( i = 1, i <= Ntests, i++,
vv = V List Box(
dt1 << Distribution(
Stack( 1 ),
Continuous Distribution( Column( :result ), Horizontal Layout( 1 ), Vertical( 0 ) ),
Where( :test_name == Column(limits,"test_name")[i] )
)
);
vl << append( vv )
);
newFit = New Window( "Spec Limits Collection", vl );