안녕하십니까,
수십만 줄의 데이터 테이블이 있습니다.실행 ID 열, 장치 이름 열(현재 관심 있는 29개) 및 관련 값 열이 있습니다.따라서 각 실행에 대해 데이터를 기록하는 여러 장치가 있으며 실행 ID를 x축으로 사용하여 각 장치에 대한 실행 차트를 만들고 싶습니다.그러나 개별적으로 부분적으로 해결할 수 있지만 함께 해결할 수 없는 두 가지 문제가 있습니다.
먼저 JMP 13을 사용하고 있습니다.JMP 16에 액세스할 수 있지만 현재 설치되어 있지 않습니다.JMP의 다른 버전으로 변경하여 중단하고 싶지 않은 기존 스크립트와 수행하려는 작업이 많이 있습니다. ~해야 한다 쉽게 할 수 있습니다.
둘째, 내가 취하려는 일반적인 접근 방식은 다음과 같습니다.
- 고유한 장치 이름 목록을 반복하고 실행 차트를 생성합니다. 각 장치에 대한 데이터에서 결정된 각 개별 실행 차트 제어 및 사양 제한에 피드(제어 차트에 제어 및 사양 제한을 충분히 쉽게 공급할 수 있음)
- 모든 차트를 새 창으로 집계
그래프 작성을 위한 스크립트는 다음과 같습니다.
curDev = devices[i]<BR />dt << Control Chart(
Sample Label( :ID ),
KSigma( 3 ),
Where( :DeviceName == curDev ),
Chart Col( Value, Levey Jennings(Avg(lims[4]), LCL(lims[3]), UCL(lims[5]) ) ), // lims list found separately
SendToReport(
Dispatch(
{"Levey Jennings of Value"},
curDev,
TextEditBox,
{Set Text( curDev )} // Ensures y-axis title is device name rather than column name of "Value"
)
)
);이렇게 하면 상단에 "디바이스 == curDev 위치"라는 상자가 있는 여러 개의 그래프 창이 생성됩니다.
따라서 불필요하고 보기 흉한 상자에도 불구하고 그래프를 그릴 수 있지만 29개의 그래프 창이 열립니다.
이제 창에서 모두 집계하고 맨 위의 "디바이스 ==" 상자를 제거해야 합니다.
도움이 될 것이라고 생각한 포럼에 다음과 같은 답변이 있습니다. 그래프 빌더 보고서 창에서 "where"를 제거하는 방법 - JMP 사용자 커뮤니티 .실제로 29개의 개별 그래프를 생성하면 상단의 상자가 제거되므로 다음과 같습니다.
Build_Chart = Function({var},
cco = dt << Control Chart(
Sample Label( :ID ),
KSigma( 3 ),
Where( :Value == curDev ),
Chart Col( :Value, Levey Jennings(Avg(lims[4]), LCL(lims[3]), UCL(lims[5]) ) ),
);
tp = Report(cco) << topparent;
tp[Textbox(1)] << delete;
);
for(i=1, i<=NItems(devices), i++,
curDev = devices[i]; //probably unnecessary
Build_Chart(curDev);
)그러나 링크 된 포럼 게시물에 설명 된 것과 동일한 작업을 시도하면 창에 1 개의 차트가 표시되고 스크립트 오류가 발생합니다. "Send는 'Send', tp[Text Box( 1 )] << delete/*###*/의 액세스 또는 평가에서 스크립팅 가능한 개체를 예상합니다."
Build_Chart = Function({var},
// same function as above
)
pb = Panel Box();
for (i = 1, i<= NItems(devices), i++,
curDev = devices[i];
pb <<APPEND></APPEND>Build_Chart 함수에서 tp << delete를 사용하여 패널 상자에 차트를 추가하면 문제가 해결되는 이유는 무엇입니까?
내가 시도한 또 다른 접근 방식은 다음과 같으며 여기서 보고서 개체를 얻습니다.
nw = New Window("Charts",
lub = Lineup Box(NCol(2));
);
for (i = 1, i<= NItems(devices), i++,
curDev = devices[i];
cco = dtRecLog << Control Chart(
Sample Label( :ID ),
KSigma( 3 ),
Where( :Device == curDev ),
Chart Col( :Value, Levey Jennings(Avg(lims[4]), LCL(lims[3]), UCL(lims[5]) ) ),
);
rep = cco << Report;
lub << Append(rep);
);이렇게 하면 " Where == " 상자가 없는 29 개의 그래프가 있는 별도의 창이 생성되지만 또한 29개의 개별 그래프 창을 생성합니다.cco << cco는 창에 대한 참조가 아니므로 창 삭제가 작동하지 않습니다.나 ~할 수 있었다 do Window() << Delete Window, 하지만 창 이름이 무엇인지 모르고 명백한 추측이 작동하지 않으므로 JSL에서 창을 삭제할 수 없습니다.
따라서 도움이 필요한 것은 다음과 같습니다.
- 차트 창 위에 "where :Device == curDev" 상자가 없는 모든 그래프가 있는 창 만들기
- 모든 차트를 단일 창으로 집계
- 29개의 다른 창을 생성하지 않습니다.
도움을 주셔서 감사합니다.