안녕하세요, JMP 전문가 여러분,
왠지 글이 삭제된 것 같아서 다시 올려요
나는 많은 예측 공식이 포함된 DOE 테이블을 가지고 있습니다. 이 공식에는 X, Y축 관계가 있습니다.
데이터 테이블을 아래 형식으로 재정렬하여 표면 플롯(X, Y, 값)을 그려 매개변수 변경에 따라 어떻게 변경되는지 확인하고 싶습니다.

두 가지 문제:
1. 수식을 얻은 다음 if(행 == 1, 수식 1, if(행 == 2, 수식 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);
)
)
나는 그것을 찾았습니다. 간단한 구문 분석()이 첫 번째 질문에 대한 트릭을 수행할 수 있습니다.
seval(evalexpr(
:height << set formula(expr(parse(final)))
));
하지만 두 번째 질문의 경우, 매개변수 변경에 따라 3D 지도가 어떻게 변경되는지 사용자가 쉽게 검토할 수 있도록 스크롤 막대를 사용하여 각 값을 설정할 수 있다면 정말 좋을 것입니다.
입력에 숫자 편집 상자 대신 슬라이더 상자를 사용해야 하는 것 같습니다.
Jim에게 감사합니다. 제가 찾고 있는 것은 슬라이더 상자입니다.
하지만 한 가지 더, 슬라이더 상자에서 값을 가져오기 위해 버튼 상자를 만든 다음 각 값을 설정하여 행을 변경합니다. 추가 확인 버튼 없이 슬라이더로 행을 실시간으로 변경할 수 있습니까?
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 , ,
확인 버튼에서 JSL을 가져와 Slider Box() 정의에 배치할 수 있습니다. 슬라이더를 움직일 때마다 실행됩니다.
이것으로 문제가 완벽하게 해결되었습니다. 지원해 주셔서 감사합니다, Jim