JMP 專家您好,
不知怎麼的,我覺得我的貼文被刪除了,重新發一下
我有一個DOE表,裡面有很多預測公式,這些公式有X,Y軸關係
我想將資料表重新排列為以下格式,以便我可以繪製曲面圖(X,Y,值)以查看當我更改參數時它如何變化

兩個問題:
1.我可以得到公式,然後連接到以下格式 if ( row == 1, Formula 1, if( row == 2, Formula 2, ......etc)
但最終公式是一個帶有“”的長字符,我需要手動刪除“'以使公式起作用
2.我使用H列錶框獲取值並設定每一行更改參數,以便我可以看到曲面圖如何變化。但理想情況下我想使用 scoll bar 來更改參數,以便我可以更流暢地看到更改
dt = data table("example DOE table");
dt2 = current data table();
colname = dt << get column names();
colnamelist = {};
formulalist = {};
loopword = char("If( Row() == ");
mid = char("");
final = char("");
//Get column names with predicted formula
for (i = 1, i <= N items(colname),i++,
pos = Contains (colname[i], "Pred F");
if(pos == 1 , insert into(colnamelist, colname[i]), continue())
);
//Get formula from columns and save into list
for each({colval}, colnamelist,
eval(evalexpr(
formula = Char(Expr(Name Expr(As Column(dt,colval))) << get formula());
));
insert into (formulalist, formula)
);
//Concat formulas to below format: If( row == 1, Formula 1, If( row ==2, Forumla 2, If( row == 3, formula 3)))......etc
for (i=1, i <= N rows() , i++,
mid = mid || loopword || char(i) || ", " || char(formulalist[i]) || ", "
);
final = mid || char("0");
for (i=1, i <= N rows() , i++,
final = final || char(")")
);
eval(evalexpr(
:height << set formula(expr(final))
));
nw = New Window( "process paramaeter setting",
H List Box( Text Box( " Input Parameter A " ), A = Number Edit Box() ),
H List Box( Text Box( " Input Parameter B " ), B = Number Edit Box() ),
H List Box( Text Box( " Input Parameter C " ), C = Number Edit Box() ),
H List Box( Text Box( " Input Parameter D " ), D = Number Edit Box() ),
Button Box( "OK",
theA = A << get;
theB = B << get;
theC = C << get;
theD = D << get;
:Parameter A << set each value(theA);
:Parameter B << set each value(theB);
:Parameter C << set each value(theC);
:Parameter D << set each value(theD);
//Somehow the column with formula cannot draw into surface plot directly, so I have to copy and paste value to anohter column to draw
newheight = :height << get values;
:newheight<< set values(newheight);
)
)
我發現了,一個簡單的 parse() 就可以解決我的第一個問題
seval(evalexpr(
:height << set formula(expr(parse(final)))
));
但對於第二個問題,如果我們能夠有滾動條來設定每個值,以便用戶可以輕鬆查看 3D 地圖如何隨著參數的變化而變化,那就太好了,
謝謝吉姆,我正在尋找一個滑塊盒。
但還有一件事,我創建一個按鈕框來從滑塊框中獲取值,然後設置每個值來更改行,是否可以使行隨著滑塊實時更改,而不需要額外的檢查按鈕?
Value = 0;
New Window( "Example",
Panel Box( "Parameter setting",
tb = Text Box( "Parameter A: " || Char( Value ) ),
sb = Slider Box( 0, 1, Value, tb << Set Text( "Value: " || Char( Value ) ) ),
Button Box( "OK",
:Parameter A << set each value(Value)
)
)
);
查看 Slider Box() 的腳本索引,您將看到:
語法: box = Slider Box(最小值, 最大值, 變數, SCRIPT , ,
您可以從 OK 按鈕取得 JSL 並將其放入 Slider Box() 的定義中。每次移動滑桿時都會執行它。