" 그룹화 열에 따라 달라지는 프로세스 사양 제한 "이라는 제목의 블로그 게시물을 읽고 다음과 같이 생각했을 수 있습니다.
그 게시물은 단일 보고서 창에서 그룹화 열에 기반한 역량 분석을 얻는 방법을 보여주었습니다. 그러나 게시물을 다 읽고 나면,
이 게시물에서 원하던 분석을 얻었을 수도 있지만 각 단계에 대해 별도의 관리 차트가 제공되었습니다.
아마도 당신이 찾고 있던 것은 그래프에 표시된 사양 한계를 포함한 단상 관리도였을 것입니다...
JMP 의 훌륭한 기능 중 하나는 유연한 스크립팅 언어입니다. JMP 스크립팅 언어(JSL) 를 사용하면 원하는 유형의 그래프를 만들 수 있습니다. 이 블로그 게시물에서는 사양 한계가 그래프에 표시된 단일 위상 관리도를 생성하는 데 필요한 스크립트를 자세히 설명합니다.
예: 책에 텍스트 인쇄하기
제 블로그 게시물 " 그룹화 열에 따라 다른 프로세스 사양 한계 "에서 인쇄 프로세스의 예를 소개했습니다. 그 예를 살펴보겠습니다. 인쇄 프로세스의 변화는 기울기, 두께 및 길이 문제를 포함하여 선의 왜곡을 일으킬 수 있습니다. 이 예에서는 선의 길이를 고려합니다. 선이 너무 길면 문장이 페이지 밖으로 나갈 수 있습니다. 선이 너무 짧으면 페이지에 낭비되는 공간이 많아집니다.
이 특정 데이터의 경우 두 가지 다른 책 크기가 있습니다. 하드커버 책은 너비가 17.78cm입니다. 페이퍼백 책은 너비가 13.97cm입니다. 하드커버 책의 줄 길이는 인쇄 길이가 16cm +/- 0.2cm이면 양호하다고 간주됩니다. 페이퍼백 책의 줄 길이는 인쇄 길이가 12 +/- 0.4cm이면 양호하다고 간주됩니다. 모든 인쇄 작업에서 첫 번째 책과 마지막 책을 측정합니다. 줄 길이는 각 책의 중앙에 있는 지정된 페이지에서 측정합니다.

분석
이 예제에 대한 단계 제어 차트를 만들려면 품질 및 프로세스 메뉴에서 제어 차트 빌더를 선택합니다. 길이를 Y로 드래그합니다. 유형을 단계로 드래그합니다. 실행을 x축으로 드래그합니다.

" 그룹화 열에 따라 다른 프로세스 사양 한계 "라는 제목의 블로그 게시물에서 우리는 사양 한계 열 속성이나 사양 한계 명령을 사용할 수 없다는 것을 알게 되었습니다. 이러한 명령은 전체 열(이 경우 길이)에 적용되기 때문입니다. 즉, 두 단계 모두 동일한 사양 한계를 가지게 되는데, 이는 우리가 원하는 바가 아닙니다. 따라서 스크립팅을 통해 이를 추가해야 합니다.
제어 차트 스크립트 가져오기
이 그래프를 생성하는 스크립트를 얻으려면 Control Chart Builder 옆에 있는 빨간색 삼각형에서 "스크립트를 스크립트 창에 저장"을 선택합니다. 다음 스크립트가 제공됩니다.
Control Chart Builder(
Show Capability( 0 ),
Variables( Subgroup( :Run ), Y( :Length ), Phase( :Type ) ),
Chart( Position( 1 ) ),
Chart( Position( 2 ) ),
SendToReport(
Dispatch(
{},
"Control Chart Builder",
FrameBox,
{DispatchSeg(
TextSeg( 3 ),
{Line Color( "None" ), Fill Color( "None" )}
), DispatchSeg(
TextSeg( 4 ),
{Line Color( "None" ), Fill Color( "None" )}
)}
)
)
);
스크립트를 더욱 강력하고 우리의 목적에 맞게 사용하기 쉽게 만들기 위해, 우리는 이 스크립트에 몇 가지를 추가할 것입니다. 우리는 스크립트 앞에 필요한 데이터 테이블(실제 데이터와 나중에 이야기할 사양 한계 테이블)을 여는 코드를 추가하고, 스크립트에 핸들을 할당하고, 스크립트에 관심 있는 데이터 테이블을 가리키고, 보고서에 핸들을 추가합니다.
dt=Open("SpecChange.jmp"); //actual data
dtSpec=Open("specChangelimits.jmp"); //data containing specification limits
obj=dt<<CONTROL chart="" builder=""></CONTROL>
<P> </P>
<P>다음으로, 기존 스크립트에 사양 제한을 추가하는 방법을 알아내야 합니다.</P>
<H3 id="toc-hId--476198926" id="toc-hId--1762693416">H 라인 명령</H3>
<P>기본적으로 <A href="https://www.jmp.com/en_us/software/data-analysis-software.html" target="_self" rel="noopener noreferrer">JMP</A> 에서 스펙 한계선은 참조선으로 추가됩니다. JSL을 통해 참조선을 추가하는 것을 고려할 수 있습니다. 이것을 시도하면 원하는 것을 얻을 수 없다는 것을 알게 될 것입니다. 이전에 언급한 방법과 마찬가지로 참조선은 전체 그래프에 적용되므로 두 단계(하드커버와 페이퍼백)에 모두 표시됩니다. 대신 선분을 통해 각 단계에 대해 별도의 스펙 선을 구현할 수 있습니다. 사용하려는 특정 선분은 H Line입니다. H Line 명령의 형식은 다음과 같습니다.</P>
<P> </P>
<CODE class=" language-jsl">H Line( x1, x2, y);
x1에서 x2까지 전체 프레임을 통과하는 수평선을 y에 그립니다.
x1과 x2의 값을 결정하세요
우리는 JMP가 이미 알고 있는 정보를 활용할 수 있습니다. 관리 차트는 이미 그래프에 관리 한계선을 그렸기 때문에 하드커버와 페이퍼백 모두에 대한 x1과 x2가 무엇인지 이미 알고 있습니다. 우리는 그 기존의 라인 세그먼트를 사용하여 x1과 x2를 결정할 수 있습니다.
actLineSeg=(rpt[FrameBox(2)]<<XPATH>0, //if the description contains the word average
actx=Insert(actx , arg(actLineSeg,i)<<GET x="" values=""></GET></XPATH>
<P>위의 코드에서 우리는 먼저 위치 차트의 라인 세그먼트를 찾습니다. 다음으로, 우리는 각 라인 세그먼트에 대한 설명을 얻습니다. 우리는 두 개의 리스트 actx와 actPhase를 만듭니다. 설명에 "Average"라는 단어가 포함되어 있으면, 라인 세그먼트의 x 값은 actx에 저장되고 위상 레이블은 actPhase에 저장됩니다.</P>
<H3 id="toc-hId-1298808436" id="toc-hId-1722927254">H Line에 대한 y 인수 얻기</H3>
<P>y를 얻는 데 사용하는 방법은 이 정보를 어떻게 저장했는지에 따라 결정됩니다. 이 예제와 블로그 게시물의 목적을 위해 이 정보가 블로그 게시물 " <A href="https://community.jmp.com/t5/JMPer-Cable/Process-specification-limits-that-differ-based-on-a-grouping/ba-p/36656" target="_self">그룹화 열에 따라 다른 프로세스 사양 한계</A> "에서와 마찬가지로 별도의 데이터 테이블에 저장된다고 가정합니다.</P>
<P> </P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="specChange2.png" style="width: 297px;"><span class="lia-inline-image-display-wrapper" image-alt="specChange2.png" style="width: 297px;"><img src="https://us.v-cdn.net/6038925/uploads/images/5995i8FBEFD91C35B15EE/specChange2.png" role="button" title="specChange2.png" alt="specChange2.png" /></span></SPAN></P>
<P> </P>
<P>이전 스크립트로 얻은 actPhase 값을 사양 한계 데이터 테이블의 "Type" 열과 일치시켜야 합니다. 위상 변수는 항상 "Type"이라고 불리는 것은 아닙니다. JSL을 다른 예제에서 사용할 수 있도록 보다 일반적으로 만들기 위해 제어 차트 빌더 보고서에서 위상 변수의 이름을 얻을 수 있습니다. 구체적으로 그래프 바로 위에 나타나는 위상 레이블에서 이 정보를 가져올 수 있습니다.</P>
<P> </P>
<CODE class=" language-jsl">actPhaseName=(rpt[GraphBuilderBox(1)]<<XPATH></XPATH>
<P>사양 한계 표에서 해당 행이 결정되면 사양 한계 데이터 표의 LSL, 목표 및 USL 열에서 하위 사양 한계, 목표 및 상위 사양 한계 값을 얻을 수 있습니다.</P>
<P> </P>
<CODE class=" language-jsl">for(j=1, j<=narg(actx),j++, //for every argument of actx
for(k=1, k<=nrows(dtSpec), k++, //for every row of the specification data table
if(arg(actPhase,j)==Column(dtSpec, actPhaseName)[k],
//if actPhase is equal to Type in the specification table
H Line( arg(actx,j)[1], arg(actx,j)[2], Column(dtSpec, "LSL")[k] );
H Line( arg(actx,j)[1], arg(actx,j)[2], Column(dtSpec, "Target")[k]);
H Line( arg(actx,j)[1], arg(actx,j)[2], Column(dtSpec, "USL")[k] );
);
);
);
그래픽 스크립트
스크립트에서 H Lines를 어떻게 사용합니까? HLine 명령은 그래픽 스크립트 명령으로 래핑해야 합니다. 그래픽 스크립트는 보고서 창 내의 기존 프레임에 그래픽 항목을 추가하는 방법입니다. 스크립트에 설명을 추가하고 사양 한계선에 대한 펜 색상을 선택합니다. 필요한 경우 그리드 선 순서와 참조선 순서를 결정할 수도 있습니다. 그래픽 스크립트는 SendTo Report 명령을 통해 제어 차트 빌더 창으로 보낼 수 있습니다.
obj<<SENDTOREPORT></SENDTOREPORT>
<H3 id="toc-hId--1221151498" id="toc-hId-913580628">결론</H3>
<P>이 모든 부분을 합치면 다음과 같은 완성된 스크립트가 완성됩니다.</P>
<P> </P>
<CODE class=" language-jsl">dt=Open("SpecChange.jmp"); //actual data
dtSpec=Open("specChangelimits.jmp"); //data containing specification limits
obj=dt<<CONTROL chart="" builder="">0, //if the description contains the word average
actx=Insert(actx , arg(actLineSeg,i)<<GET x="" values=""></GET></CONTROL>
<P>이 스크립트를 실행하면 다음과 같은 결과가 나옵니다.</P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Note: The specification limits are difficult to see for hardcover since all lines are so close together. You can alter the Y axis through the interface or JSL so that the lines can be seen more clearly if necessary." style="width: 686px;"><span class="lia-inline-image-display-wrapper" image-alt="Note: The specification limits are difficult to see for hardcover since all lines are so close together. You can alter the Y axis through the interface or JSL so that the lines can be seen more clearly if necessary." style="width: 686px;"><img src="https://us.v-cdn.net/6038925/uploads/images/5996i6790A59F4F9F1592/specchangefinished.png" width="686" height="346" role="button" title="specchangefinished.png" alt="Note: The specification limits are difficult to see for hardcover since all lines are so close together. You can alter the Y axis through the interface or JSL so that the lines can be seen more clearly if necessary." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Note: The specification limits are difficult to see for hardcover since all lines are so close together. You can alter the Y axis through the interface or JSL so that the lines can be seen more clearly if necessary.</span></span><SPAN class="lia-inline-image-caption" onclick="event.preventDefault();">참고: 하드커버의 경우 모든 선이 너무 가까이 있기 때문에 사양 한계를 보기 어렵습니다. 필요한 경우 인터페이스나 JSL을 통해 Y축을 변경하여 선을 더 명확하게 볼 수 있습니다.</SPAN></SPAN></P>
<P>위 이미지에서 하드커버의 경우 한 가지 사양 제한 세트(15.98, 16, 16.02)가 나타나고, 페이퍼백의 경우 다른 사양 제한 세트(11.6, 12, 12.4)가 나타나는 것을 볼 수 있습니다.</P>
<P>이 스크립트는 원하는 만큼 많은 위상 레벨을 가질 수 있고, 레벨의 이름을 원하는 대로 지정할 수 있으며, 위상 열의 이름을 원하는 대로 지정할 수 있다는 점에서 일반적입니다. 그러나 스크립트는 사양 한계를 별도의 데이터 테이블에 저장해야 합니다. 사양 한계 데이터 테이블에는 위상 레벨당 1개의 행이 있어야 합니다. 위상 레벨 이름은 CCB 보고서에 표시된 레벨 이름과 일치해야 합니다. 데이터 테이블에는 각각 하위 사양 한계, 대상 및 상위 사양 한계를 저장하는 LSL, 대상 및 USL이라는 제목의 열이 있어야 합니다.</P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="cartoon_thought_bubble_3.jpg" style="width: 150px;"><span class="lia-inline-image-display-wrapper" image-alt="cartoon_thought_bubble_3.jpg" style="width: 150px;"><img src="https://us.v-cdn.net/6038925/uploads/images/6004i22873971DFC74A41/cartoon_thought_bubble_3.jpg" role="button" title="cartoon_thought_bubble_3.jpg" alt="cartoon_thought_bubble_3.jpg" /></span></SPAN></P>