우리 모두가 액세스 할 수있는 표준 데이터 테이블을 기반으로하는보다 간단한 예제를 작성한 다음 실행하고 주석을 달 수있는 코드를 가질 수 있습니다.
contourplot을 표시 상자 컨테이너에 넣었으므로 제대로 작동하는 것 같습니다.
Names default to here(1);
RangeMin = Associative array(["C flow" => 180,
"D flow" => 165,
"Time" => 33,
"Pressure" => 200,
"Temp" => 610,
"A flow" => 180,
"B flow" => 165]);
RangeMax = Associative Array(["C flow" => 355,
"D flow" => 325,
"Time" => 44,
"Pressure" => 350,
"Temp" => 630,
"A flow" => 355,
"B flow" => 450]);
SliderVars = {620.869565217391, 40.5217391304348, 268.478260869565, 263.260869565217,
288.913043478261, 271.086956521739, 247.608695652174, 263.43, 40.5217391304348,
268.478260869565, 263.260869565217, 288.913043478261, 271.086956521739,
247.608695652174, 620.869565217391, 40.5217391304348, 268.478260869565,
263.260869565217, 288.913043478261, 271.086956521739, 247.608695652174};
XColumns = {"Temp", "Time", "Pressure", "A flow", "B flow",
"C flow", "D flow"};
GraphingTable = Current Data Table();
sjaakie = New window("test", testlist = h list box());
CPcontent = VListBox(
GraphingTable << Contour Plot(
X( :X, :Y ),
Y( :Models ),
Show Data Points( 1 ),
Fill Areas( 1 ),
Label Contours( 0 ),
Color Theme( "Spectral" ),
Automatic Recalc( 1 )
)
);
ValuesOutlineBox = Outline Box("Values", SliderList = v list box());
For(i=1, i<= n items(XColumns),i++,
SliderList << append(
h list box(
Text box(XColumns[i]),
eval(
parse(
eval insert(
"Var^char(i)^ = ^SliderVars[i]^;
SB^char(i)^ = Slider Box(
^RangeMin << get value(XColumns[i])^,
^RangeMax << get value(XColumns[i])^,
Var^char(i)^,
NEB^char(i)^ << set( Var^char(i)^ );
^Column(GraphingTable, XColumns[i])^ << set values(J(n rows(),1,Var^char(i)^));
);"
);
);
),
eval(
parse(
eval insert(
"NEB^char(i)^ = Number Edit Box( Var^char(i)^,
<<SETFUNCTION></SETFUNCTION>
참고로
당신이 eval을 사용할 때 (parse (evalinsert (... )))을 사용하면 변수를 "char"할 필요가 없습니다. 그래서 당신이 쓸 수 있습니다.
SB^i^ = Slider Box( . . . )
내용은 이미 문자열이므로 문자는 중복됩니다.
슬라이더를 사용하여 테이블을 업데이트하려고하면 모델 열의 모델이 업데이트되어 웨이퍼지도에서 새 값을 예측하고 그 다음에 contourplot을 다시 그립니다. 문제는 자동 재 계산을 켜고 contourplot에 슬라이더를 추가하면 슬라이더가 다시 계산 될 때 발생합니다.
슬라이더와 contourplot을 별도의 창에 보관할 수 있지만 JMP 프로젝트에서 작업 할 경우 문제가 발생하며 탭 보고서 레이아웃을 스크립팅해야합니다.
슬라이더 형식의 테이블 - 그래프에 머물 필요가 없습니다. 메모리에서 모두 수행 할 수도 있지만 코드에서 contourplot을 재구성하는 것이 재미 있다고 생각하지 않습니다. 그래프 빌더는 포인트 맵을 그릴 수있는 한 괜찮습니다.
이 새로운 창 ()의 현재 해결책은 작동하지만 슬라이더를 움직일 때 나는 약간의 해킹 작업과 느린 업데이트 된 등고선 플롯을 삭제하고 다시 부착 할 것입니다. 그래서 나는 더 나은 해결책을 찾고 있습니다!
첨부 된 테이블 예.
첨부 된 스크립트 예 :
이름은 기본적으로 여기에 있습니다 (1); RangeMin = 연관 배열 ( "C flow"=> 180, "D flow"=> 165, "Time"=> 33, "Pressure"=> 200, "Temp"=> 610, "A flow"=> 180 , "B flow"=> 165]); RangeMax = Associative Array ( "C flow"=> 355, "D flow"=> 325, "Time"=> 44, "Pressure"=> 350, "Temp"=> 630, "A flow"=> 355 , "B flow"=> 450]); SliderVars = {620.869565217391, 40.5217391304348, 268.478260869565, 263.260869565217, 288.913043478261, 271.086956521739, 247.608695652174, 263.43, 40.5217391304348, 268.478260869565, 263.260869565217, 288.913043478261, 271.086956521739, 247.608695652174, 620.869565217391, 40.5217391304348, 268.478260869565, 263.260869565217, 288.913043478261, 271.086956521739, 247.608695652174}; XColumns = { "온도", "시간", "압력", "A 플로우", "B 플로우", "C 플로우", "D 플로우"}; GraphingTable = 현재 데이터 테이블 (); sjaakie = 새 창 ( "test", testlist = h 목록 상자 ()); CP = GraphingTable << X (: X, : Y), Y (: 모델), 데이터 포인트 표시 (1), 채우기 영역 (1), 레이블 윤곽선 (0), 색상 테마 ( "스펙트럼" 자동 Recalc (1)); ValuesOutlineBox = 개요 상자 ( "값", SliderList = v 목록 상자 ()); SliderList << append (h 목록 상자 (텍스트 상자 (XColumns [i]), eval (구문 분석 ( "Var ^ char (i) ^" 슬라이더 상자 (^ RangeMin <<) 값을 얻습니다. (XColumns [i]) ^, ^ RangeMax << 값 가져 오기 (XColumns [i]) ^, Var ^ char (GraphingTable, XColumns [i]) ^ << 설정 값 (J (n rows (), 1, () () () () () () () () ()}}) 테스트 목록 [<<] 상자 () eval insert ( "NEB ^ char (i) ^ = 숫자 편집 상자 (Var ^ char (i) ^, (J (n rows (), 1, Var ^ char (i) ^)); 테스트 목록 [2] << Delete 상자 (), 대기 (0.1), 테스트 목록 << append (보고서 (CP)))));); ");))))))); testlist << append (ValuesOutlineBox); testlist << append (보고서 (CP)); sjaakie << 프런트 창 불러 오기 ();