大家好,
我想編寫一個小儀表板/應用程序,您可以在其中使用滑塊更改三個變量 A、B、C(允許連續級別)和使用單選按鈕更改第四個變量 Faktor(因為只允許 4 個級別)。

然後將我的數據表 G1、G2、G3 的列乘以 A、B、C 以及 Faktor,並使用圖形生成器與所有三個新列的總和一起繪製。
Clear Log();
Delete Symbols();
Names Default To Here( 1 );
// default parameter values.
A = 1;
B = 2;
C = 3;
Faktor = 2;
dt = Current Data Table();
dt << New Column( "G1scale", Numeric, Continuous, Formula( (:G1 * Here( 1 ):A) * Here( 1 ):Faktor ) );
dt << New Column( "G2scale", Numeric, Continuous, Formula( (:G2 * Here( 1 ):B) * Here( 1 ):Faktor ) );
dt << New Column( "G3scale", Numeric, Continuous, Formula( (:G1 * Here( 1 ):C) * Here( 1 ):Faktor ) );
dt << New Column( "SumColumn", Numeric, Continuous, Formula( :G1scale + :G2scale + :G3scale ) );
到目前為止,我的腳本工作正常,拖動滑塊會更新數據表中的公式列,但我在使用單選按鈕時遇到了麻煩。
update = Expr(
Here( 1 ):A = p;
Here( 1 ):B = r;
Here( 1 ):C = t;
Here( 1 ):Faktor = Choose( nw1["cat"], 1, 2, 3, 4 );
dt << rerun formulas;
Wait( 0 );
);
nw1 = New Window( "Faktor",
Outline Box( "Select Faktor", cat = Radio Box( {"1", "2", "3", "4"} ),update )
);
nw2=New Window( "Sliding",
Outline Box( "A",
Slider Box(
1,
10,
p,
update
)
),
Outline Box( "B",
Slider Box(
1,
10,
r,
update
)
),
Outline Box( "C",
Slider Box(
1,
10,
t,
update
)
)
);
g1=Graph Builder(
Size( 529, 456 ),
Show Control Panel( 0 ),
Variables(
X( :WL ),
Y( :G1scale ),
Y( :G2scale, Position( 1 ) ),
Y( :G3scale, Position( 1 ) ),
Y( :SumColumn, Position( 1 ) )
),
Elements( Points( X, Y( 1 ), Y( 2 ), Y( 3 ), Y( 4 ), Legend( 3 ) ) ),
SendToReport(
Dispatch( {}, "graph title", TextEditBox, {Set Text( "Simulated Plot" )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "Mygauss" )} )
)
);當我選擇單選按鈕時,我無法更新數據表(因此也無法更新圖表)。
第二個問題是我想將三個當前窗口合併為一個窗口(儀表板或應用程序)。 我可以為組合 Windows 選擇它們,但是當嘗試將它們發送到儀表板生成器時,只出現圖形生成器窗口,而不是 silders。 如何將我的 silder/單選按鈕拖到儀表板/應用程序構建器中?
@Feli ,
除了一個簡單的例子,我沒有使用過 DashboardBuilder。 我使用 Application Builder 或只是編寫腳本來創建應用程序。你可能想讀一讀。 有些人真的很喜歡。 其他已經編寫了一段時間腳本的人,通常通過 JSL 處理事情。
下面是為您的任務啟動 ApplicationBuilder 的屏幕截圖。
我認為閱讀第 11 章是一個好的開始,
@gzmorgan0
非常感謝!
您成功地達到了我想要的解決方案。
在我之前的許多嘗試中,我正在玩弄表格變量——我讓滑塊工作,但不是單選按鈕。
我缺少的關鍵是:
dt << Set Table Variable("Faktor", Expr(num (cat << Get Selected) ) );我的 Faktor 表變量總是一個字符串,這弄亂了公式,所以我不得不尋找其他方法。
我正在嘗試使用 Dashboard Builder/Application Builder 構建我的圖表,因為在開始 JSL/應用程序構建時很多人都建議這樣做,但我將實施您的提示並進一步深入研究容器等。
再次感謝您的幫助!
@Feli ,
此腳本中有幾個項目會導致問題。
第一個是貓,RadioBox。 腳本附加到大綱框,而不是單選框
//Outline Box( "Select Faktor", cat = Radio Box( {"1", "2", "3", "4"} ),update ) //wrong, see below
Outline Box( "Select Faktor", cat = Radio Box( {"1", "2", "3", "4"} , update ) )
名稱默認為此處(1);聲明變量值僅適用於此腳本。您不需要尋址 Here 命名空間,語法為 Here:A 。 但這帶來了另一個問題,公式列 G1scale、G2scale 等將具有類似:G1*A 的公式。腳本運行後,或者如果您稍後嘗試打開表,則變量 A 是未知的。幾個建議是:
- 使用 dt << Set Table Variable(A, 1) 創建表變量 A、B、C、Faktor
- 那麼formua變成 :G1*:A 並且當腳本未運行時表格將識別該值,
- 如果您多次運行腳本,它將創建多個 G1scale、G1scale 2 等。這可以通過檢查 or 列是否存在來更優雅地完成,如果存在,刪除它或只分配函數。 此外,一旦窗口關閉,您可以使用 nw 的 On Close 函數刪除這些列。
但是,最大的建議是,如果您要深入研究交互式腳本,您應該學習如何創建 JMP 報告
容器:列錶框,列錶框,陣容盒,面板盒.您的腳本使用大綱框容器。
控制:按鈕框,滑塊框,複選框, ETC。
輸入:組合框,列錶框,列列錶框, ETC。
不要依賴組合窗口。
JMP 腳本指南中的第 11 章是一個很好的起點。 MainMenu > 幫助 >JMP 文檔 > JMP 腳本指南 >> 第 11 章
附件是使用此佈局的腳本(樹結構)

