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 );
但它没有奏效。
这是这样做的正确方法吗?
提前致谢。
回复:JSL-表上的通用分布谢谢您的帮助!
我还有3个问题......
1. 如果我需要使用“Graph Builder”进行覆盖(假设 machine1 中的 test1 与 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. 为什么我的“列表框”被隐藏了,只有当我关闭绘图时才能看到它。
谢谢!
回复: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();
回复:JSL-表上的通用分布如果您有兴趣,请给我发送一张桌子
汤姆.abramov@ald.co.il
我将把脚本放在这里回复:JSL-表上的通用分布改变 bin 大小的比例,将 LSL、USL 等添加到每个结果窗口怎么样?
两个问题:
1. 如何从我刚刚绘制的直方图中获取西格玛值到绘图的刻度箱?
2. 如何在没有测试名称计数器的情况下添加参考线?
预先非常感谢您!
“std”- 是统计表中的标准值
“???”- 是“limits”表中的值。
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 )}
)
)
);
回复:JSL-表上的通用分布同样,您可以不循环地运行它:
Distribution(
Continuous Distribution(
Column( :result ),
Horizontal Layout( 1 ),
Vertical( 0 )
),
By( :test_name )
);
回复: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 );