通過 JSL 將規格限制設置為列屬性 - 圖中未顯示的線你好
我有一個腳本,將規格限制 (USL/LSL) 分配給列屬性,然後繪製該列的圖,我希望
查看繪圖上繪製的限制線。 發生的情況是限制在表中設置正確,但在圖上不可見。
如果我在運行腳本後手動將相同的繪圖繪製到此列 - 不再有線條。
如果我打開列規格屬性窗口,我會看到限制,“顯示參考線”處於打開狀態。
僅當我點擊“應用”然後再次繪圖時 - 我可以按預期看到繪圖上的線條。 但我無法通過腳本讓它工作..
任何想法?
(使用 JMP PRO 15)


高級統計建模自動化和腳本數據訪問大規模定制質量與工藝工程視窗回复:通過 JSL 將規格限制設置為列屬性 - 圖中未顯示的線吉姆,謝謝你成功了。
回复:通過 JSL 將規格限制設置為列屬性 - 圖中未顯示的線這個 JSL 應該可以解決問題
// Your code
datacolnames = res_thk_specs:colname << get values;
specExpr = Expr(
Column( Res_Thk_Data, name ) <<
Set Property(
"Spec Limits",
{LSL( Expr( lower ) ), USL( Expr( upper ) ),
TARGET( Expr( target ) ), Show Limits( 1 )}
)
);
For( i = 1, i <= N Rows( RES_THK_SPECS ), i++,
name = Column( RES_THK_SPECS, "COLNAME" )[i];
lower = Column( RES_THK_SPECS, "LSL" )[i];
upper = Column( RES_THK_SPECS, "USL" )[i];
target = Column( RES_THK_SPECS, "TARGET" )[i];
_unit_ = Column( RES_THK_SPECS, "UOM" )[i];
If( Contains( datacolnames, name ),
Eval( Eval Expr( specExpr ) )
);
If( Contains( datacolnames, name ),
Column( Res_Thk_Data, name ) << Set Property( "Units", eval( _unit_ ) )
);
);回复:通過 JSL 將規格限制設置為列屬性 - 圖中未顯示的線吉姆,感謝您的回复。我跑了,限制被添加到表中。我遇到問題的部分是向列屬性添加單位。當我從我的代碼中刪除註釋時,單位列屬性確實得到填充,但沒有填充所需的英寸或磅值。相反,兩者都充滿了 List 的價值。我不清楚在從數據表單元格傳輸文本的表達式語句或求值語句中缺少什麼。任何幫助都會
讚賞。
回复:通過 JSL 將規格限制設置為列屬性 - 圖中未顯示的線這是一個使用您的代碼的簡單示例。如果它仍然不適用於您的數據表,請查找與列名不一致的地方
Names Default To Here( 1 );
res_thk_specs = New Table( "thelookup",
Add Rows( 2 ),
New Column( "UOM",
Character,
"Nominal",
Set Values( {"inches", "lbs"} ),
Set Display Width( 48 )
),
New Column( "TARGET",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [60, 115] )
),
New Column( "USL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [70, 172] )
),
New Column( "LSL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [50, 60] ),
Set Display Width( 89 )
),
New Column( "colname",
Character,
"Nominal",
Set Values( {"height", "weight"} ),
Set Display Width( 0 )
)
);
res_thk_data = New Table( "thedata",
Add Rows( 5 ),
New Column( "height",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Values( [59, 61, 55, 66, 52] )
),
New Column( "weight",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Selected,
Set Values( [95, 123, 74, 145, 64] )
)
);
// Your code
datacolnames = res_thk_specs:colname << get values;
specExpr = Expr(
Column( Res_Thk_Data, name ) <<
Set Property(
"Spec Limits",
{LSL( Expr( lower ) ), USL( Expr( upper ) ),
TARGET( Expr( target ) ), Show Limits( 1 )}
)
);
//unitExpr = Expr(
// column ( Res_Thk_Data, name ) << Set Property(
// "Units", { _unit_ }
// )
//);
For( i = 1, i <= N Rows( RES_THK_SPECS ), i++,
name = Column( RES_THK_SPECS, "COLNAME" )[i];
lower = Column( RES_THK_SPECS, "LSL" )[i];
upper = Column( RES_THK_SPECS, "USL" )[i];
target = Column( RES_THK_SPECS, "TARGET" )[i];
_unit_ = Column( RES_THK_SPECS, "UOM" )[i];
If( Contains( datacolnames, name ),
Eval( Eval Expr( specExpr ) )
);
// If( Contains( datacolnames, name ),
// Eval( Eval Expr( unitExpr ) )
// );
);回复:通過 JSL 將規格限制設置為列屬性 - 圖中未顯示的線我使用一種非常相似的方法從極限表中獲取極限,以將規格極限添加到列屬性中。我想嘗試使用類似的方法根據限製表中的值更新單位。目前在代碼顯示中被註釋掉了,但是當我運行時,我得到一個值“List”作為單位屬性而不是所需的單位。我認為這是語法問題,但到目前為止還沒有找到 eval expr 語句的正確語法。
回复:通過 JSL 將規格限制設置為列屬性 - 圖中未顯示的線我不確定為什麼沒有花括號它會表現得像那樣,因為使用它們似乎是正確的語法JMP 幫助 - 列屬性
col << Set Property( "propertyName", {argument list} );
JMP 必須在內部保存一些信息,因為如果您運行不帶花括號的命令並檢查列屬性,它看起來很好,但如果您使用複制列屬性,您只會得到第一個參數(因為您沒有列表參數):
Add Column Properties(
Set Property("Notes", "Explore data adventurously"),
Set Property("Spec Limits", LSL(50))
)
然後在 Spec Limits 列屬性中按下 Apply 後,參數將更新為正確的列表:
Add Column Properties(
Set Property("Notes", "Explore data adventurously"),
Set Property("Spec Limits", {LSL(50), USL(150), Show Limits(1)})
)回复:通過 JSL 將規格限制設置為列屬性 - 圖中未顯示的線謝謝 !確實添加花括號解決了問題:)
你能解釋一下為什麼嗎
回复:通過 JSL 將規格限制設置為列屬性 - 圖中未顯示的線您似乎是在最初顯示圖表後應用限制。限制是在圖表最初顯示時繪製的,如果在該點之後添加限制,則必須重新繪製圖表才能顯示它們。
回复:通過 JSL 將規格限制設置為列屬性 - 圖中未顯示的線語法似乎略有偏差,您必須在 Spec Limits 之後添加 {}。 請參閱下面的腳本,如果不按應用,重量將不起作用,高度將起作用。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Column(dt, "weight") << Set Property("Spec Limits", LSL(50), USL(150), Show Limits(1));
Column(dt, "height") << Set Property("Spec Limits", {LSL(50), USL(100), Show Limits(1)});
gb = dt << Graph Builder(
Size(534, 456),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(4)), Smoother(X, Y, Legend(5)))
);回复:通過 JSL 將規格限制設置為列屬性 - 圖中未顯示的線感謝您的及時回复! 我認為代碼並不是真正相關的,因為它確實在列屬性中正確設置了規範限制。
它設置了 LSL 和 USL 並顯示限制 (1),但即使設置正確,繪圖也不會顯示它們。
即使我使用固定數字的直接代碼,它的行為也是一樣的..
Column(DATA_DT,param) << Set Property( "Spec Limits", LSL( 0.31 ),USL(0.34),Show Limits(1) );

只有在點擊“應用”並再次繪製圖形後 - 它才會顯示線條。
回复:通過 JSL 將規格限制設置為列屬性 - 圖中未顯示的線你好@shlomi_bakish ,
你能提供一個你的 JSL 代碼的例子嗎? 這可能有助於診斷您遇到的問題。 同時,這部分代碼是您如何設置列的規範限制並確保它們已打開以進行繪圖的示例。
//Turn on spec lines for graphs
dt = Current Data Table( ); //just a way of setting the current data table to the variable dt
<BR />dt_ColNames = dt << Get Column Names( string ); //Gets the column names from the data table
<BR />For( i = 1, i <= N Items( dt_ColNames ), i++,<BR />
spec = Column( dt, dt_ColNames[i] ) << Get Property( "Spec Limits" ); //This gets the Boolean spec property of each column
<BR />//now, for each column perform the task of assigning the spec limits<BR /> If( Is Empty( spec ) == 0,
LSL = Try( spec["LSL"], . );
USL = Try( spec["USL"], . );
Target = Try( spec["Target"], . );
Eval(
Substitute(
Expr(
Column( dt, dt_ColNames[i] ) << Set Property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
),
),
Expr( __LSL__ ), LSL,
Expr( __USL__ ), USL,
Expr( __Target__ ), Target
)
);//This whole Eval() is wrapping a Substitution(), which wraps an expression Expr(). <BR /> //The variables that will be substituted are __LSL__ and so on. The Show Limits (1) checks the box to turn on the limits as reference lines.
);
);這應該可以幫助您朝著正確的方向前進。 但是,如果沒有看到您的代碼並且不了解您在做什麼,就很難更具體地滿足您的確切需求。
希望這可以幫助!,
DS