如何使用 JSL 修改現有的 DisplayBox<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我正在嘗試創建一個按鈕,該按鈕將修改 Fit Model() 對話框的輸出,以在“擬合摘要”表中包含一個預測 R2。我抓住當前窗口,然後我需要激活 PRESS 統計。在此之後,它就足夠簡單了,如果我已經通過比賽菜單激活了 PRESS 統計數據,它就可以正常工作。如果我自己對“擬合模型”對話框進行編碼並使用第二行激活 PRESS 統計數據,然後將其發送到報告,它也會起作用。我遇到的問題是抓住 Current Window() 抓住了 DisplayBox 沒有辦法指示平台做事。我考慮過只抓取腳本來製作窗口,關閉原始腳本並運行一個新腳本(一個快速的屏幕閃爍並不算太糟糕)但是 << Get Script 返回樹結構,而不是 Fit Model() 腳本。我缺少什麼容易的東西嗎?如果有幫助的話,我正在 JMP 9 中寫這篇文章。我希望它與 JMP 8 兼容,但這並不重要。謝謝!
dg = Current Window();dg << PRESS; /###/press = dg[NumberColBox("Press RMSE")] << Get as Matrix;press = press[1];ss = dg[NumberColBox("Sum of Squares")] << Get as Matrix;lastrow = Nrow(ss);sst = ss[lastrow];predR = 1-press/sst;values = dg[NumberColBox(1)] << Get as Matrix;newvalues = J(1,6);newvalues[1::2] = values[1::2];newvalues[3] = predR;newvalues[4::6] = values[3::5];dg[StringColBox(1)] << Set Values({"RSquare","RSquare Adj","RSquare Pred","Root Mean Square Error","Mean of Response","Observations (or Sum Wgts)"});dg[NumberColBox(1)] << Set Values(newvalues);回复:如何使用 JSL 修改現有的 DisplayBoxMS - Get Scriptable Object 完美解決了這個問題!我確實知道“團隊”會在哪些方面引起問題,但考慮到我們在這裡開展的工作類型,我認為這不會成為真正的問題。非常感謝您引導我找到解決方案!
dg = Current Window();fm = dg[OutlineBox(1)] << Get Scriptable Object;fm << PRESS(1);press = dg[NumberColBox("Press")] << Get as Matrix;press = press[1];ss = dg[NumberColBox("Sum of Squares")] << Get as Matrix;lastrow = Nrow(ss);sst = ss[lastrow];回复:如何使用 JSL 修改現有的 DisplayBox好的我明白了。 <
我花了一段時間才弄清楚,但是下面的方法使用 <
dt =打開( “$ENGLISH_SAMPLE_DATA/Big Class.jmp” ) ;
擬合模型(
是( :重量) ,
效果( :高度) ,
性格(標準最小二乘法) ,
強調(最小報告) ,跑步
) ;
合身=窗戶( “大類:擬合最小二乘法” )[大綱框( 1個)] <<獲取可編寫腳本的對象;
合身<<按( 1個) ;
打印(合身<<獲取腳本) //獲取腳本按預期工作!
如何使用 JSL 修改現有的 DisplayBoxMS - 感謝您的快速回复!問題是,要按照我想要的方式進行部署,它不能包含以下部分。
fit = Fit Model( Y( :ABRASION ), Effects( :SILICA, :SILANE ), Personality( Standard Least Squares ), Emphasis( Minimal Report ), Run( :ABRASION << {Plot Actual by Predicted( 0 ), Plot Regression( 0 ), Plot Residual by Predicted( 0 ), Plot Effect Leverage( 0 )} ));dg = Report( fit );
我希望能夠將其部署為最終用戶的插件,以便在使用典型的 JMP 界面擬合模型並讓它附加重要信息後,只需從他們的工具欄中按下即可。
讓我感到困惑的是,如果 JMP 創建它而不是 JSL 創建它,我無法通過 JSL 訪問窗口的上下文菜單。我可以通過 JSL 輕鬆訪問頂級菜單,但不能訪問上下文菜單。另外,我不明白為什麼 << Get Script 消息返回窗口的樹結構而不是 JSL 腳本來創建它,就像上下文菜單提供的那樣。我知道 JMP 可以做我想做的事,但我似乎被 JSL 鎖定了。
如何使用 JSL 修改現有的 DisplayBox我不確定你到底想做什麼,但我認為你必須將 Press(1) 消息發送到 Fit Model 對象而不是 Window 對象。 如下例所示(運行然後單擊“PRESS”)。 適用於 JMP9 (Mac)。
dt =打開( "$English_Sample_Data/Tiretread.jmp" ) ;
合身=擬合模型(
是( :磨損) ,
效果( :二氧化矽, :矽烷) ,
性格(標準最小二乘法) ,
強調(最小報告) ,
跑步(
:磨損<< {按預測繪製實際( 0 ) ,情節回歸( 0 ) ,按預測繪製殘差( 0 ) ,
情節效應槓桿( 0 )}
)
) ;
dg =報告(合身) ;
dg <<前置(
按鈕盒( “按” ,
合身<<按( 1個) ;
按= dg [數字列框( “按 RMSE” )] <<獲取矩陣;
按=按[ 1個] ;
SS = dg [數字列框( “平方和” )] <<獲取矩陣;
最後一排= N行( SS ) ;
不銹鋼= SS [最後一排] ;
預測R = 1個-按/不銹鋼;
價值觀= dg [數字列框( 1個)] <<獲取矩陣;
新價值觀=傑( 1個, 6個) ;
新價值觀[ 1個:: 2個] =價值觀[ 1個:: 2個] ;
新價值觀[ 6個] =預測R ;
新價值觀[ 3個:: 5個] =價值觀[ 3個:: 5個] ;
dg [字符串列框( 1個)] <<添加元素( “RSquare 預測” ) ; // 添加值不起作用,因此重新排序
dg [數字列框( 1個)] <<設置值(新價值觀) ;
)
) ;
如何使用 JSL 修改現有的 DisplayBox需要明確的是,第一行 dg = Current Window();在日誌中返回 DisplayBox[]。我正在尋找一種方法來通過 JSL 訪問窗口中的上下文菜單,以將內容添加到樹結構中,以便稍後可以獲取它們,特別是如何標記 PRESS(1)。謝謝!