大家好,
我想編寫一個小儀表板/應用程序,您可以使用滑桿(允許連續等級)更改三個變數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" )} )
)
);當我選擇單選按鈕時,我無法更新資料表(因此也無法更新圖表)。
第二個問題是我想將三個目前視窗合併為一個視窗(儀表板或應用程式)。 我可以選擇它們全部用於組合窗口,但是當嘗試將它們發送到儀表板構建器時,僅出現圖形構建器窗口,而不出現滑塊。 如何將我的滑桿/單選按鈕拖曳到儀表板/應用程式產生器中?
@費利,
除了一個簡單的例子之外,我沒有使用過 DashboardBuilder。 我使用應用程式生成器或僅編寫腳本來創建應用程式。您可能會想閱讀相關內容。 有些人真的很喜歡。 其他已經編寫了一段時間腳本的人通常會透過 JSL 處理事情。
以下是為您的任務啟動 ApplicationBuilder 的螢幕截圖。
我認為閱讀第11章是一個好的開始,
@gzmorgan0
非常感謝!
你成功地達到了我想要的解決方案。
在我的許多早期嘗試之一中,我正在嘗試使用表格變數 - 我讓滑桿工作,但不讓單選按鈕工作。
我缺少的關鍵是:
dt << Set Table Variable("Faktor", Expr(num (cat << Get Selected) ) );我的 Faktor 表變數始終是一個字串,這弄亂了公式,所以我必須找到其他方法。
我嘗試使用 Dashboard Builder/Application Builder 建立我的圖表,因為許多人在開始 JSL/應用程式建置時都建議這樣做,但我將實現您的提示並進一步深入研究容器等。
再次非常感謝您的幫忙!
@費利,
該腳本中有幾項會導致問題。
第一個是與貓有關的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
- 然後公式變為 :G1*:A 並且當腳本未運行時表將識別該值,
- 如果多次執行腳本,它將建立多個 G1scale、G1scale 2 等。透過檢查 或 列是否存在,可以更優雅地完成此操作,如果存在,請將其刪除或僅分配函數。 此外,一旦視窗關閉,您可以使用 nw 的 On Close 函數刪除這些欄位。
然而,最大的建議是,如果您要深入研究互動式腳本,您應該學習如何使用以下命令建立 JMP 報告:
容器:列錶框,列錶框,陣容盒,面板盒。您的腳本使用大綱框容器。
控制:按鈕盒,滑塊盒,複選框, ETC。
輸入:組合框,列錶框,列列錶框, ETC。
不要依賴組合視窗。
《JMP 腳本編寫指南》中的第 11 章是一個很好的起點。 主選單 > 幫助 >JMP 文件 > JMP 腳本編寫指南 >> 第 11 章
附件是使用此佈局的腳本(樹狀結構)

