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. "Graph Builder"를 사용하여 오버레이를 수행해야 하는 경우(machine1 대 machine2의 test1이라고 가정).
나는 성공하지 않고 똑같이하려고합니다.
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 등 추가는 어떻습니까?
두 가지 문제:
1. 방금 플롯의 스케일 빈에 플롯한 히스토그램에서 시그마 값을 어떻게 얻습니까?
2. 테스트 이름 카운터 없이 참조 라인을 어떻게 추가합니까?
미리 감사드립니다!
"std"- 통계 테이블의 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 );