我正在嘗試創建一個對我的客戶來說更加用戶友好的對話框模型框。 我沒有使用單選框或複選框,而是使用 col 列錶框來使用戶介面更像擬合模型中的對話框。 該腳本應該自訂圖形和輸出,以在從資料表 JSL 腳本為給定產品的 PQA 生成輸出時節省使用者時間。
附件是一個 JMP 文件,其中包含一個帶有基本列名稱的玩具資料集,以及我在本文中引用的附加 JSL 腳本。
我有一個變量,使用者可以將 col 輸入到名為 set_resultcol 的變數中。 set_resultcol 的這個值可以與任何資料集列標題一起使用(即資料集可以將「結果」或「結果」或「結果(N)」或「值」作為將在其上建模的連續數值變數的標題y 軸作為因變數。
但是,我遇到了一些問題,即 set_resultcol 值的表達式未在我一直使用的 col 列錶框選項中的 y 軸腳本的重命名中表達,以使用戶界面更加用戶友好,即使我有嘗試從col 列表在框結果清單中取得值,例如{“Result”}[1]。 我對模態視窗中的 col 列錶框的概念還很陌生,所以我希望我能在我的 JSL 程式碼上得到一些更有經驗的人的幫助,以幫助我確定可以做什麼。
當我使用單選框時,set_resultcol 的結果值是一個字串,可以在下面的 JSL 中引用該字串,以將 y 軸重命名為 PQA(品質屬性):

Names Default To Here( 1 );
dt = Current Data Table();
//part 1. ask user for column names in a new window nw1
//possible Group column name (should be character)
character_col_names = dt << Get Column names(character, String);
//possible result column name (should be numeric)
numeric_col_names = dt << Get Column names(Numeric, String);
nw1 = New Window("Set group by variable an",
<<MODAL></MODAL>結果圖的 y 軸標籤「Result」(例如)將重新命名為「A」(為了簡單起見,PQA 稱為「A」)。

我使用 col 列錶框創建了以下模式對話框,透過拖放功能使模式對話框更加用戶友好和美觀,而不是一次顯示所有列。 在該視窗下方,我有相應的 JSL 程式碼,但我在處理這些 col 列錶框時遇到了問題。

Names Default To Here( 1 );
dt = Current Data Table();
nw1 = New Window("Set variables for stability model",
<<MODAL></MODAL>然而,結果圖如下,y 軸名稱,在此資料表「結果」中,y 軸為 PQA「A」的「A」:

我知道 col 列錶框正在產生變數列表,因為 JSL 腳本中的選項告訴我:
//is this set_resultcol a list? if so, show the contents.
Show(is list(set_resultcol)); // which gives 1 or “true” as shown in the log
Show(set_resultcol[1]); //which gives “Result” as shown in the log

這個 JSL 腳本有什麼問題不允許在資料集中引用它? 我可以做什麼來解決這個問題?
我能找到的與此問題相關的唯一文件是「JMP 15 腳本指南」pdf 第 524、527-529 頁中的 col 列錶框以及該手冊中的清單部分。 我已經嘗試過這些例子,但它們沒有告訴我任何我不知道的事情。
如果可以避免的話,我不會使用 Dispatch 來修改報告。 我寧願取得參考文獻,然後根據這些參考文獻修改報告。 下面的腳本可能會給您一些想法:
Names Default To Here(1);
dt = Open("$DOWNLOADS/Col List Box Y-axis labeling issue 7_11_2022.jmp");
nw1 = New Window("Set variables for stability model",
<<MODAL>
["LSL" => 0.3, "USL" => 0.9],
"B" =>
["LSL" => 0.5, "USL" => 2],
"C" =>
["LSL" => 4, "USL" => 6]
];
//Response Result outline box references
response_ob_refs = fm << XPath("//OutlineBox[contains(text(), 'Response Result PQA')]");
For Each({ror_list}, response_ob_refs,
ror = ror_list[1];
cur_group = Word(2, ror << get title, "=");
cur_lsl = aa_settings[cur_group]["LSL"];
cur_usl = aa_settings[cur_group]["USL"];
rp_ref = (ror << XPath("//OutlineBox[contains(text(), 'Regression Plot')]"))[1];
// Y-axis
y_axis = rp_ref[Axis Box(1)];
Eval(EvalExpr(
y_axis << Add Ref Line(Expr(cur_lsl), "Solid", Dark Red, Expr(EvalInsert("LSL (^cur_lsl^)")), 1);
y_axis << Add Ref Line(Expr(cur_usl), "Solid", Dark Red, Expr(EvalInsert("USL (^cur_usl^)")), 1);
));
y_axis << RemoveAxisLabel("Result");
y_axis << AddAxisLabel(cur_group);
y_axis << Min(cur_lsl);
y_axis << Max(cur_usl);
f_box = rp_ref[FrameBox(1)];
f_box << Frame Size(600, 400);
// Legend
f_box << Row Legend(
Eval(set_groupby),
Color(1),
Color Theme("JMP Default"),
Marker(0),
Marker Theme(""),
Continuous Scale(0),
Reverse Scale(0),
Excluded Rows(0)
);
);
</MODAL>

如果您出於某種原因確實想使用 Dispatch 那麼我建議您查看一下使用 Eval Insert、Eval Expr、Parse 和 Substitute 將一個表達式插入另一個表達式