從參考表添加參考線你好, @tx尼爾森
我正在嘗試創建一個變異性圖,並為每個單獨的圖表添加具有不同值的參考線。 目前我可以繪製參考線,但問題是如果參考表不包含數據表中的所有測試列,則腳本將無法工作。
這是我嘗試過的方法,如果參考表包含數據表中的所有測試,它就會起作用:
Names Default To Here( 1 );
Clear Globals();
dt = Open("Data table.jmp"); // Open data table
// Loop to get column name Currents and Voltages
colist = {};
Col_List = dt << Get Column Names( "String" );
For( q = 1, q <= N Items( Col_List ), q++,
If( Contains( Col_List[q], "Current" ) | Contains( Col_List[q], "Voltage" ),
Column( Col_List[q] ) << Set Selected( 1 );
Insert Into( colist, Col_List[q] );
)
);
// Var Chart
vc= dt << Variability Chart(
Y( (Eval( colist )) ),
X( :Wafer ID ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Std Dev Chart( 0 ),
Points Jittered( 1 )
);<BR />// Reference data table
dt1 = Open ("Reference table.jmp");
xb = Column(dt1, "Reference") << getValues;
// Loop to add reference line to the variability chart
For( i = 1, i <= N Items( vc ), i++,
Report( vc[i] )[Framebox( 1 )] << DispatchSeg( CustomStreamSeg( 3 ), {Line Width( 2 )} );
Report( vc[i] )[AxisBox( 1 )] << {Add Ref Line( xb[i], "Solid", "Green", "RTS", 2 )};
);大規模定制回复:從參考表添加參考線有幾個問題。
- 不同的平台有不同的樹結構,因為它們有不同的輸出結構。因此,輸出中到不同對象的映射是不同的。
- 您將 dt 指定為指向“數據表”的指針,但稍後在腳本中,您嘗試執行疊加圖,指向由變量 dt2 引用的數據表,而該變量在代碼中不存在。
- 在創建關聯數組的代碼中,您使用參考數據表中的一個變量,稱為“參考”。在優化循環討論中提供的示例數據中,該數據表中的變量稱為平均值。
下面是對代碼的修改,產生以下輸出

Names Default To Here(1);
// dt = Open("Data table.jmp"); // Open data table
dt=data table("Data Table");
// dt1 = Open("Reference table.jmp");
dt1=data table("Reference data table");
// Loop to get column name Currents and Voltages
colist = {};
Col_List = dt << Get Column Names("String");
For(q = 1, q <= N Items(Col_List), q++,
If(Contains(Col_List[q], "Current") | Contains(Col_List[q], "Voltage"),
Column(Col_List[q]) << Set Selected(1);
Insert Into(colist, Col_List[q]);
)
);
// Overlay Plot
vc = dt << Overlay Plot( Y( Eval( colist ) ), No Overlay( 1 ),Ungroup Plots( 1 ) );
aa_refs = Associative Array(dt1:Tests << get values, dt1:mean << get values);
// Loop to add reference line to the variability chart
For(i = 14, i <= N Items(colist), i++,
If(Contains(aa_refs, colist[i]),
Report(vc)[AxisBox(1)] << Add Ref Line(aa_refs[colist[i]], "Solid", "Green", "RTS", 2);
);
);
請花些時間閱讀《腳本指南》中有關顯示樹的內容,該指南位於 JMP 文檔庫的“幫助”下拉菜單下。
回复:從參考表添加參考線你好@jthi ,
我厭倦了你在疊加圖上的代碼,但似乎有一個錯誤。 有什麼建議麼?
Names Default To Here(1);
// dt = Open("Data table.jmp"); // Open data table
// dt1 = Open("Reference table.jmp");
// Loop to get column name Currents and Voltages
colist = {};
Col_List = dt << Get Column Names("String");
For(q = 1, q <= N Items(Col_List), q++,
If(Contains(Col_List[q], "Current") | Contains(Col_List[q], "Voltage"),
Column(Col_List[q]) << Set Selected(1);
Insert Into(colist, Col_List[q]);
)
);
// Overlay Plot
vc = dt2 << Overlay Plot( Y( Eval( colist ) ), No Overlay( 1 ),Ungroup Plots( 1 ) );
aa_refs = Associative Array(dt1:Tests << get values, dt1:Reference << get values);
// Loop to add reference line to the variability chart
For(i = 1, i <= N Items(colist), i++,
If(Contains(aa_refs, colist[i]),
Report(vc[i])[Framebox(1)] << DispatchSeg(CustomStreamSeg(3), {Line Width(2)});
Report(vc[i])[AxisBox(1)] << {Add Ref Line(aa_refs[colist[i]], "Solid", "Green", "RTS", 2)};
);
);

回复:從參考表添加參考線這裡有一個稍微不同的解決方案,直接閱讀參考表
Names Default To Here( 1 );
Clear Globals();
//dt = Open( "Data table.jmp" ); // Open data table
dt = Data Table( "data table" );
// Loop to get column name Currents and Voltages
colist = {};
Col_List = dt << Get Column Names( "String" );
For( q = 1, q <= N Items( Col_List ), q++,
If( Contains( Col_List[q], "Current" ) | Contains( Col_List[q], "Voltage" ),
Column( Col_List[q] ) << Set Selected( 1 );
Insert Into( colist, Col_List[q] );
)
);
// Var Chart
vc = dt << Variability Chart(
Y( (Eval( colist )) ),
X( :Wafer ID ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Std Dev Chart( 0 ),
Points Jittered( 1 )
);// Reference data table
//dt1 = Open( "Reference table.jmp" );
dt1 = Data Table( "reference table" );
xb = Column( dt1, "Reference" ) << getValues;
// Loop to add reference line to the variability chart
For( i = 1, i <= N Items( vc ), i++,
//Report( vc[i] )[Framebox( 1 )] << DispatchSeg( CustomStreamSeg( 3 ), {Line Width( 2 )} );
testVal = Word( -2, Report( vc[i] )[Outline Box( 2 )] << get title, " " ) || " " || Word(
-1,
Report( vc[i] )[Outline Box( 2 )] << get title,
" "
);
testRow = dt1 << get rows where( :tests == testVal );
If( N Rows( testRow ) > 0,
Report( vc[i] )[AxisBox( 1 )] << Add Ref Line( dt1:Reference[testRow[1]], "Solid", "Green", "RTS", 2 )
);
);回复:從參考表添加參考線您可以循環 colist 並使用 if 語句檢查 dt1 是否具有該特定值,如果有,則根據從 dt1 找到的值添加參考行。 這是使用關聯數組的一種選項(您可能必須為變異性圖表添加 Y 軸縮放,因為參考線可以根據其值隱藏)。
Names Default To Here(1);
// dt = Open("Data table.jmp"); // Open data table
// dt1 = Open("Reference table.jmp");
// Loop to get column name Currents and Voltages
colist = {};
Col_List = dt << Get Column Names("String");
For(q = 1, q <= N Items(Col_List), q++,
If(Contains(Col_List[q], "Current") | Contains(Col_List[q], "Voltage"),
Column(Col_List[q]) << Set Selected(1);
Insert Into(colist, Col_List[q]);
)
);
// Var Chart
vc = dt << Variability Chart(
Y((Eval(colist))),
X(:Wafer ID),
Analysis Type("Choose best analysis (EMS REML Bayesian)"),
Show Range Bars(0),
Std Dev Chart(0),
Points Jittered(1)
);// Reference data table
aa_refs = Associative Array(dt1:Tests << get values, dt1:Reference << get values);
// Loop to add reference line to the variability chart
For(i = 1, i <= N Items(colist), i++,
If(Contains(aa_refs, colist[i]),
Report(vc[i])[Framebox(1)] << DispatchSeg(CustomStreamSeg(3), {Line Width(2)});
Report(vc[i])[AxisBox(1)] << {Add Ref Line(aa_refs[colist[i]], "Solid", "Green", "RTS", 2)};
);
);