如何使用 JSL 腳本更新數值中的 Y 軸參考線標籤(使用 USL LSL 標籤自動繪圖)如標題所述,如何使用 JSL 腳本更新數值中的 Y 軸參考線標籤(使用 USL LSL 標籤自動繪圖)?
我目前正在使用 JSL 腳本從一組資料表生成一系列圖,以便單擊即可顯示具有 USL/LSL 限制的分佈圖。圖中顯示的這些限制是基於管理限製表(我更新了值)。但還需要改進的一步是根據管理限製表以實際數值顯示這些 USL/LSL 標籤,我找不到相關的 JSL 命令來自動化它,除非我必須手動一一更新標籤。提前致謝。

For( i = 1, i <= 100, i++,
xCol = Column(dt, i);
if ( Mod( i-8, 5 ) == 0,
rowBox = hlistbox();
win << Append( rowBox )
);
rowBox << Append(
//New Window( "training - Fit Y by X by Serial",
//dt << Fit Group(
Graph Builder(
Size( 350, 350 ),
Fit to Window("off"),
Show Control Panel( 0 ),
Show Title ( 1 ),
Show Subtitle ( 0 ),
Show Legend( 1 ),
Show Header ( 0 ),
Show Footer ( 0 ),
//Update Variable to Column Name
Variables(X( :TEMP ),Y( xCol ),Overlay( :Unit )),
Elements( Smoother( X, Y, Legend( 8 ) ), Points( X, Y, Legend( 9 ) ) ),
SendToReport(
Dispatch(
{}, "Graph Builder",
OutlineBox, {Set Title( "" ), Image Export Display(Normal)},
),
Dispatch(
{}, "Graph Builder",
FrameBox,{Transparency(0.8), Left( 0 ), Right( 0 ), Top( 1 ), Bottom( 1 )},
)
//To update labels USL/LSL limits in numeric value
)
)自動化和腳本編寫基礎資料分析與建模視窗回覆:如何使用 JSL 腳本更新數值中的 Y 軸參考線標籤(使用 USL LSL 標籤自動繪圖)這可能會給出一些想法https://community.jmp.com/t5/Discussions/Change-Line-Color-and-Line-Style-in-all-platforms/mp/819799/highlight/true#M99792
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
ml = dt << Manage Limits(
Process Variables(dt << Get Column Group("Processes")),
);
ml << Show Limits All;
ml << Save to Column Properties;
ml << Close Window;
dt << Distribution(
Stack(1),
Continuous Distribution(
Column(:NPN1),
Horizontal Layout(1),
Vertical(0),
Process Capability(Use Column Property Specs)
)
);
// "Tool script" starts from here
// Names Default To Here(1);
abs = Current Report() << XPath("//AxisBox");
names = {"A", "B", "C", "D"};
idx = 0;
For Each({ab}, abs,
s = ab << get script;
For Each({cur_s}, s,
If(Head Name(cur_s) == "Add Ref Line",
l = Substitute(Name Expr(cur_s), Expr(Add Ref Line()), Expr(List()));
If(Contains(l, "LSL") | Contains(l, "Target") | Contains(l, "USL"),
// this isn't documented
idx++;
Eval(EvalExpr(
ab << Update Ref Line(1, Expr(idx), "Solid", "Orange", names[idx], 3);
));
);
);
);
);
如果只是一個特定的平台和一個軸,這很可能會被簡化
回覆:如何使用 JSL 腳本更新數值中的 Y 軸參考線標籤(使用 USL LSL 標籤自動繪圖)這是一個簡單的腳本,用於設定列的規格限值,然後運行圖形產生器,該生成器會自動顯示規格限值

Names Default To Here( 1 );
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
htUSL = 66;
htLSL = 55;
Eval(
Eval Expr(
dt:height << set property(
"spec limits",
{LSL( Expr( htLSL ) ), USL( Expr( htUSL ) ), Show Limits( 1 )}
)
)
);
dt << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) )
);
回覆:如何使用 JSL 腳本更新數值中的 Y 軸參考線標籤(使用 USL LSL 標籤自動繪圖)謝謝nelson,程式碼與我的程式碼類似,它也無法以數值顯示USL LSL的參考線。
我嘗試使用 Num(htUSL) 來更改它的數值,但它產生的圖表根本沒有參考線,我們必須使用 Expr (htUSL) 來顯示線條。除了手動方式之外,似乎沒有其他選項可以透過 JSL 腳本以數值顯示這些限制。
htUSL = 66;
htLSL = 55;
Eval(
Eval Expr(
dt:height << set property(
"spec limits",
{LSL( Expr( htLSL ) ), USL( Expr( htUSL ) ), Show Limits( 1 )},
{LSL( Num( htLSL ) ), USL( Num( htUSL ) ), Show Limits( 1 )}, //Not working
)
)
);回覆:如何使用 JSL 腳本更新數值中的 Y 軸參考線標籤(使用 USL LSL 標籤自動繪圖)謝謝賈莫。這非常適合以過程能力方式顯示繪圖,它還顯示 USL LSL 而不是數值。我已經更新了管理限製表,只是希望再一步透過 JSL 腳本在圖中以數值形式顯示這些限制。
回覆:如何使用 JSL 腳本更新數值中的 Y 軸參考線標籤(使用 USL LSL 標籤自動繪圖)為什麼在 Set Property("Spec Limits") 函式中使用 2 個清單?規格限值僅允許使用一組限值。此外,Eval( EvalExpr() 函數在封閉的函數中尋找Expr(),並擴展每個Expr() 的值,然後Eval() 函數可以正確評估它。在您的第二個規格限制規範中,您取代了Expr() 和 Num() 因為它位於 JMP 列表內部,所以不會對它或 htLSL 和 htUSL 進行求值,因此傳遞給 JSL 的內容對於 JMP 來說是未知的。
如果您嘗試運行多個色譜柱,則每個色譜柱都必須單獨具有其規格限制。
你運行我的例子了嗎......沒有改變?如果是這樣,它是否會產生具有 USL 和 LSL 參考線的圖表?
回覆:如何使用 JSL 腳本更新數值中的 Y 軸參考線標籤(使用 USL LSL 標籤自動繪圖)嗨吉姆,這是關於更改數值而不是“USL”文字中的參考線。
您的程式碼範例能夠顯示具有 USL、LSL 參考線的圖表,無需任何更改,我只想將 USL/LSL 顯示為數值(來自管理限製表的參考)。
附加快照顯示我希望更改 USL、LSL 的數值(請參閱右側),但希望可以在 JSL 腳本中自動化。謝謝。

回覆:如何使用 JSL 腳本更新數值中的 Y 軸參考線標籤(使用 USL LSL 標籤自動繪圖)以下是使用現有限製表建立參考線的範例。有 2 個不同的範例使用 2 種不同的方法

Names Default To Here( 1 );
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
// open a limits table created from Manage Limits
dtLimit = New Table( "Limits",
Add Rows( 2 ),
New Column( "Variable", Character, "Nominal", Set Values( {"height", "weight"} ) ),
New Column( "LSL", Set Values( [55, 65] ) ),
New Column( "USL", Set Values( [66, 170] ) ),
New Column( "Target", Set Selected, Set Values( [., .] ) )
);
// One way to set the reference lines
colNames = dt << get column names( string, continuous );
// Create the graphs
For Each( {col}, colNames,
gb = dt << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( As Column( col ) ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) )
);
// Set the ref lines
// Get the row in the limits table that has the limits for the current column
theRow = (dtLimit << get rows where( dtLimit:Variable == col ))[1];
Report( gb )[AxisBox( 2 )] << add ref line(
dtLimit:LSL[theRow],
"Solid",
"Blue",
Char( dtLimit:LSL[theRow] ),
1
);
Report( gb )[AxisBox( 2 )] << add ref line(
dtLimit:USL[theRow],
"Solid",
"Blue",
Char( dtLimit:USL[theRow] ),
1
);
);
// Second way to set the reference lines using Spec Limits column property
// the default when using the Spec Limits is for graph builder to insure
// the spec limits are displayed on the graph. This example with use the
// spec limits, and then change the label to a numeric
colNames = dt << get column names( string, continuous );
ml = dt << Manage Limits( Process Variables( Eval( colNames ) ) );
ml << load from limits table( dtLimit );
ml << Show Limits All;
ml << Save to Column Properties;
ml << Close Window;
// Create the graphs
For Each( {col}, colNames,
gb = dt << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( As Column( col ) ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) )
);
// Set the ref lines
// Get the limits from the spec limits for the current column
// and change the label
specs = Column( dt, col ) << get property( spec limits );
Report( gb )[AxisBox( 2 )] << add ref line( specs["LSL"], "Solid", "Blue", Char( specs["LSL"] ), 1 );
Report( gb )[AxisBox( 2 )] << add ref line( specs["USL"], "Solid", "Blue", Char( specs["USL"] ), 1 );
);回覆:如何使用 JSL 腳本更新數值中的 Y 軸參考線標籤(使用 USL LSL 標籤自動繪圖)我假設您不理解我為您提供的腳本,因為它確實顯示瞭如何重命名圖中的規格限制。這將使用這些值而不是 LSL、USL 和目標文本
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
ml = dt << Manage Limits(
Process Variables(dt << Get Column Group("Processes")),
);
ml << Show Limits All;
ml << Save to Column Properties;
ml << Close Window;
gb = dt << Graph Builder(
Size(528, 448),
Show Control Panel(0),
Variables(X(:SITE), Y(:NPN1)),
Elements(Points(X, Y, Legend(3)))
);
abs = Report(gb) << XPath("//AxisBox");
idx = 0;
For Each({ab}, abs,
s = ab << get script;
For Each({cur_s}, s,
If(Head Name(cur_s) == "Add Ref Line",
l = Substitute(Name Expr(cur_s), Expr(Add Ref Line()), Expr(List()));
If(Contains(l, "LSL") | Contains(l, "Target") | Contains(l, "USL"),
idx++;
Eval(EvalExpr(
ab << Update Ref Line(1, Expr(idx), "Solid", "Blue", Char(l[1]), 1);
));
);
);
);
);

最有可能的是,最好不要在啟用「顯示限制」的情況下使用規格限制列屬性,而只需根據具有您自己名稱的列屬性添加限製作為參考線
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
gb = dt << Graph Builder(
Size(528, 448),
Show Control Panel(0),
Variables(X(:SITE), Y(:NPN1)),
Elements(Points(X, Y, Legend(3)))
);
specs = Column(dt, "NPN1") << get property("Spec Limits");
Report(gb)[AxisBox(2)] << Add Ref Line(
specs["LSL"], "Solid", "Blue", Char(specs["LSL"]), 1
);
Report(gb)[AxisBox(2)] << Add Ref Line(
specs["USL"], "Solid", "Blue", Char(specs["USL"]), 1
);
回覆:如何使用 JSL 腳本更新數值中的 Y 軸參考線標籤(使用 USL LSL 標籤自動繪圖)謝謝你在假期裡的回复,吉姆。我現在可以用第二種方式將其設定為數值。
回覆:如何使用 JSL 腳本更新數值中的 Y 軸參考線標籤(使用 USL LSL 標籤自動繪圖)謝謝你舉的例子,賈莫。給出的兩個例子都工作正常。自動化已經完成。