JMP 専門家の皆さん、こんにちは。
どういうわけか私の投稿が削除されたようです、もう一度投稿してください
多くの予測式を含む DOE テーブルがあります。これらの式には X、Y 軸の関係があります。
データテーブルを以下の形式に再配置して、表面プロット(X、Y、値)を描画して、パラメーターを変更するとどのように変化するかを確認できるようにしたいと考えています

2 つの問題:
1.数式を取得して、以下の形式に連結できます if ( row == 1, Formula 1, if( row == 2, Formula 2, ......etc)
しかし、最終的には数式が「」を含む長い文字になるため、数式が機能するように手動で「」を削除する必要があります
2. H リスト ボックスを使用して値を取得し、各行を設定してパラメータを変更します。これにより、曲面プロットがどのように変化するかを確認できます。しかし、理想的には、スクロールバーを使用してパラメータを変更し、変更をよりスムーズに確認できるようにしたいと考えています。
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)))
));
しかし 2 番目の質問については、ユーザーがパラメーターの変更に応じて 3D マップがどのように変化するかを簡単に確認できるように、各値を設定するためのスクロール バーがあれば本当に素晴らしいと思います。
入力には数値編集ボックスではなくスライダー ボックスを使用する必要があるようです。
ありがとう、ジム、私が探しているのはスライダーボックスです。
しかし、もう 1 つ、スライダー ボックスから値を取得するボタン ボックスを作成し、各値を設定して行を変更します。追加のチェック ボタンなしで、スライダーとして行をリアルタイムに変更することは可能ですか?
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)
)
)
);
スライダー ボックス() のスクリプト インデックスを見ると、次のことがわかります。
構文: box = スライダーボックス(最小値、最大値、変数、スクリプト、 、
OK ボタンから JSL を取得して、Slider Box() の定義に配置することができます。スライダーが移動するたびに実行されます。
これで私の問題は完璧に解決しました。サポートしてくれてありがとう、ジム