您可能已經閱讀了標題為“ 根據分組列而不同的流程規範限制”的部落格文章,並認為
該文章向您展示如何在單一報表視窗中獲得基於分組列的能力分析。然而,當你讀完這篇文章後,
您可能已經意識到該帖子為您提供了您想要的分析,但為每個階段提供了單獨的控製圖。
也許您確實在尋找單相控製圖,並在圖表上繪製了規格限制...
JMP的一大特色是其靈活的腳本語言。透過使用JMP 腳本語言 (JSL) ,您可以建立所需的圖形類型。這篇部落格文章詳細介紹了產生單相控製圖所需的腳本,並在圖表上繪製了規格限制。
範例:列印書籍中的文本
在我的部落格文章「 根據分組列而不同的流程規範限制」中,我介紹了一個列印流程的範例。讓我們回顧一下這個例子。印刷過程中的變化可能會導致線條變形,包括傾斜、厚度和長度問題。對於這個例子,我們將考慮線的長度。如果行太長,句子可能會超出頁面。如果行太短,頁面上就會浪費很多空間。
對於這個特定的數據,我們有兩種不同的書籍尺寸。精裝書寬17.78公分。平裝書寬 13.97 公分。如果精裝書的印刷長度為 16 厘米 +/- 0.2 厘米,則認為行長良好。如果平裝書的印刷長度為 12 +/- 0.4 厘米,則認為行長良好。每次印刷時,都會對第一本書和最後一本書進行測量。行長是在每本書中間的指定頁面上測量的。

分析
若要為此範例建立階段控製圖,請從「品質和流程」功能表中選擇「控製圖產生器」。將“長度”拖曳至“Y”。將「運轉」拖曳至 x 軸。

我們從標題為「 根據分組列處理不同的規格限制」的部落格文章中了解到,我們不能使用規格限制列屬性或規格限制命令,因為這些命令適用於整個列(在本例中為長度)。這意味著兩個相將具有相同的規格限制,這不是我們想要的。因此,我們必須透過腳本添加這些。
取得控製圖腳本
若要取得產生此圖表的腳本,請從「控製圖產生器」旁的紅色小三角中選擇「將腳本儲存到腳本視窗」。您將獲得以下腳本。
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--1762693412">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 線。 H 線指令有以下形式:</P>
<P> </P>
<CODE class=" language-jsl">H Line( x1, x2, y);
它在 y 處繪製一條從 x1 到 x2 穿過整個框架的水平線。
確定 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」時,行 seg 中的 x 值儲存在 actx 中,階段標籤儲存在 actPhase 中。</P>
<H3 id="toc-hId-1298808436" id="toc-hId-1722927258">取得 H 線的 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」欄位進行比對。您的相位變數並不總是被稱為“類型”。為了使 JSL 更加通用,以便可以在其他範例中使用,我們可以從控製圖產生器報告中取得階段變數的名稱。具體來說,我們可以從圖表正上方出現的階段標籤中提取此資訊。</P>
<P> </P>
<CODE class=" language-jsl">actPhaseName=(rpt[GraphBuilderBox(1)]<<XPATH></XPATH>
<P>在確定規格限製表中的對應行後,我們可以從規格限資料表中的 LSL、Target 和 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 線? HLine 指令需要包含在圖形腳本指令中。圖形腳本是我們將圖形項目新增到報表視窗內的現有框架的方式。我們將為腳本添加描述,並為規格限制線選擇筆顏色。如果需要的話,我們也可以確定網格線順序和參考線順序。圖形腳本可以透過 SendTo Report 指令傳送到控制圖建構器視窗。
obj<<SENDTOREPORT></SENDTOREPORT>
<H3 id="toc-hId--1221151498" id="toc-hId-913580632">結論</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、Target 和 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>