新手如何處理自訂直方圖、西格瑪功能和流程摘要你好。我很新。在開始學習腳本之前,我想確認我正在正確地處理這個問題。我們想要一種簡單的方法來建立以下簡單的分佈報告,該報告可以為用戶選擇的列(通常為 30 個數據點)創建,如下圖所示,我們希望刪除帶有紅線的項目:

數據表的例子是:

以下是我使用「儲存腳本/到資料表」時系統建立的腳本:
分配(
連續分佈(
列(:OD),
水平佈局( 1 ),
直方圖( 0 ),
垂直( 0 ),
製程能力(
使用列屬性規格,
製程能力分析( 不合格( 0 ) )
)
),
僅直方圖,
發送至報告(
Dispatch( {"OD", "製程能力", "OD能力", "直方圖"}, "1",
秤盒,
{最小值(2.1388234375),最大值(2.1636765625),增量(0.005),
小蜱蟲( 5 )}
)
)
);
我假設如果沒有腳本就無法完成此操作。如果這不是真的,請告訴我。
我計劃要做的是嘗試學習如何編寫腳本,以便用戶可以選擇要使用的列,其中上述腳本僅使用列「OD」。希望這可以透過運行腳本給出上面的基本報告。
然後開始尋找腳本變更以刪除我們用紅色劃掉的條目。
這種做法是否天真?有沒有更好的方法來處理它?
感謝您的任何意見,
授予
品質和工藝工程回覆:新手如何處理自訂直方圖、西格瑪功能和流程摘要對於功能表,這相當簡單,因為您可以使用篩選器,例如
Contains({"Cpk", "Cp"}, Index)
但這不適用於「流程摘要」下方的表格框,因為它沒有列名稱…因此您無法輕鬆地使用「預設」等。
所以利用腳本。透過腳本,您可以將這些標題新增至表格框中,然後使用它們進行篩選
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
mycol = "NPN1";
dist = dt << Distribution(
Ignore Platform Preferences(1),
Continuous Distribution(
Column(Eval(mycol)),
Quantiles(0),
Summary Statistics(0),
Horizontal Layout(1),
Histogram(0),
Vertical(0),
Outlier Box Plot(0),
Process Capability(
Use Column Property Specs,
Process Capability Analysis(Nonconformance(0))
)
)
);
// modify axis
Report(dist)[OutlineBox("Histogram"), AxisBox(1)] << Min(100) << Max(130) << Inc(1) << Minor Ticks(5);
// Filter table boxes
Report(dist)[OutlineBox("Within Sigma Capability"), TableBox(1)] << Filter Where(Contains({"Cpk", "Cp"}, Index));
Report(dist)[OutlineBox("Overall Sigma Capability"), TableBox(1)] << Filter Where(Contains({"Ppk", "Pp"}, Index));
Report(dist)[OutlineBox("Process Summary"), TableBox(1), StringColBox(1)] << Set Heading("Stat");
Report(dist)[OutlineBox("Process Summary"), TableBox(1), NumberColBox(1)] << Set Heading("Value");
Report(dist)[OutlineBox("Process Summary"), TableBox(1)] << Filter Where(Contains({"LSL", "Target", "USL", "N", "Sample Mean"}, Stat));

回覆:新手如何處理自訂直方圖、西格瑪功能和流程摘要賈莫,謝謝您抽出時間來做這件事。這為我應用到我們的餐桌奠定了良好的基礎。我很感謝你的幫忙。
我將嘗試一下,看看是否可以弄清楚是否可以對目標列進行使用者提示(因為名稱不同),並在此基礎上進行建置。至少我可以用我目前(有限)的知識為某些部分場景自訂腳本。對於我們的用戶來說,這甚至可能更好。安維,再次謝謝你。
回覆:新手如何處理自訂直方圖、西格瑪功能和流程摘要當您開始使用 JSL 後,為類似的東西創建簡單的 UI 就相當簡單了(如果您使用Column Dialog()則更是如此,但我個人不喜歡那樣)。此範例確實包含一些更高級的技術,但很可能會完成您想要做的事情。您可能想要添加一些健全性檢查,例如檢查規格限制,但類似的事情可以作為起點
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
run_custom_dist = Expr(
dist = dt << Distribution(
Ignore Platform Preferences(1),
Continuous Distribution(
Column(Eval(mycol)),
Quantiles(0),
Summary Statistics(0),
Horizontal Layout(1),
Histogram(0),
Vertical(0),
Outlier Box Plot(0),
Process Capability(Use Column Property Specs, Process Capability Analysis(Nonconformance(0)))
)
);
// modify axis
Report(dist)[Outline Box("Histogram"), AxisBox(1)] << Min(100) << Max(130) << Inc(1) << Minor Ticks(5);
// Filter table boxes
Report(dist)[Outline Box("Within Sigma Capability"), Table Box(1)] << Filter Where(Contains({"Cpk", "Cp"}, Index));
Report(dist)[Outline Box("Overall Sigma Capability"), Table Box(1)] << Filter Where(Contains({"Ppk", "Pp"}, Index));
Report(dist)[Outline Box("Process Summary"), Table Box(1), String Col Box(1)] << Set Heading("Stat");
Report(dist)[Outline Box("Process Summary"), Table Box(1), Number Col Box(1)] << Set Heading("Value");
Report(dist)[Outline Box("Process Summary"), Table Box(1)] << Filter Where(Contains({"LSL", "Target", "USL", "N", "Sample Mean"}, Stat));
);
nw = New Window("UI",
H List Box(
Panel Box("Pick Columns",
window:fcs = Filter Col Selector(dt, << Character(0))
),
Panel Box("Cast",
Lineup Box(N Col(2),
Button Box("Column", << Set Function(function({this},
(this << sib) << Append(window:fcs << get selected)
))),
window:clb = Col List Box(dt, Min Items(1), Max items(1), N Lines(2), << Modeling Type({"Continuous"}))
)
),
Panel Box("Actions",
Lineup Box(N Col(1),
Button Box("OK",
sel = window:clb << get items;
If(N Items(sel) > 0,
mycol = sel[1];
run_custom_dist;
window:fcs << close window;
);
),
Button Box("Cancel", window:fcs << close window);
)
)
)
);
Write();
腳本指南是 JSL 入門的良好資源
回覆:新手如何處理自訂直方圖、西格瑪功能和流程摘要謝謝賈莫!我從腳本指南開始。我可能不夠耐心,但我會繼續努力解決這個問題。:)
我可以請您再展示一項變更嗎?我認為這對我有很大幫助。您能否添加到腳本中,以便將移動平均線圖表添加到西格瑪功能下方(基本上在底部)?我用半導體檔案中的 NPN1 做了一個例子。我在腳本標註中遺漏了一些內容,我認為這會幫助我理解它。

我能想像你會翻白眼因為下一個問題從根本上顯示我不太了解 JMP。像這樣的腳本作為用戶打開並運行的腳本文件更有意義,還是將此腳本保存到數據表中並從那裡運行更有意義?這只是偏好還是有什麼優勢?
如果除了工藤之外還有其他方式來感謝您的幫助,請告訴我。你的幫助讓我省去了很多麻煩。
再次感謝您,
授予
回覆:新手如何處理自訂直方圖、西格瑪功能和流程摘要您可以使用Workflow builder建立類似的東西,因此根據您正在執行的操作,這可能是一個好主意(而且這是使用 JMP 的良好實踐)。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
run_custom_dist = Expr(
vlb = V List Box(
dist = dt << Distribution(
Ignore Platform Preferences(1),
Continuous Distribution(
Column(Eval(mycol)),
Quantiles(0),
Summary Statistics(0),
Horizontal Layout(1),
Histogram(0),
Vertical(0),
Outlier Box Plot(0),
Process Capability(Use Column Property Specs, Process Capability Analysis(Nonconformance(0)))
)
),
ccb = dt << Control Chart Builder(
Show Two Shewhart Charts(0),
Include Missing Categories(0),
Show Limit Summaries(0),
Show Capability(0),
Variables(Y(Eval(mycol))),
Chart(Points(Statistic("Moving Range")), Limits(Sigma("Moving Range"))),
Show Control Panel(0)
)
);
// modify axis
Report(dist)[Outline Box("Histogram"), AxisBox(1)] << Min(100) << Max(130) << Inc(1) << Minor Ticks(5);
// Filter table boxes
Report(dist)[Outline Box("Within Sigma Capability"), Table Box(1)] << Filter Where(Contains({"Cpk", "Cp"}, Index));
Report(dist)[Outline Box("Overall Sigma Capability"), Table Box(1)] << Filter Where(Contains({"Ppk", "Pp"}, Index));
Report(dist)[Outline Box("Process Summary"), Table Box(1), String Col Box(1)] << Set Heading("Stat");
Report(dist)[Outline Box("Process Summary"), Table Box(1), Number Col Box(1)] << Set Heading("Value");
Report(dist)[Outline Box("Process Summary"), Table Box(1)] << Filter Where(Contains({"LSL", "Target", "USL", "N", "Sample Mean"}, Stat));
nw = new window("",
vlb
);
);
nw = New Window("UI",
H List Box(
Panel Box("Pick Columns",
window:fcs = Filter Col Selector(dt, << Character(0))
),
Panel Box("Cast",
Lineup Box(N Col(2),
Button Box("Column", << Set Function(function({this},
(this << sib) << Append(window:fcs << get selected)
))),
window:clb = Col List Box(dt, Min Items(1), Max items(1), N Lines(2), << Modeling Type({"Continuous"}))
)
),
Panel Box("Actions",
Lineup Box(N Col(1),
Button Box("OK",
sel = window:clb << get items;
If(N Items(sel) > 0,
mycol = sel[1];
run_custom_dist;
window:fcs << close window;
);
),
Button Box("Cancel", window:fcs << close window);
)
)
)
);
Write();
如何使用這樣的東西完全取決於你,對我來說,為此建立一個工作流程可能是最有意義的(儘管如果沒有JSL 工作流程,修復分發可能會有點困難)或者創建一個由用戶使用的加載項可以根據需要在自己的表上運行。出於加載項的目的,我很可能讓使用者選擇多個列或使用列切換器,並且最好實施一些額外的檢查(表是否打開,所選列是否有規格限制等)。
編輯:修復了控製圖生成器中的硬編碼值
回覆:新手如何處理自訂直方圖、西格瑪功能和流程摘要賈莫,謝謝你。這為我開始努力奠定了良好的基礎。我一直在修改該程式碼,它確實很有幫助。看到新的視窗程式碼確實幫助了我所缺少的東西。
我還將透過該工作流程建構器進行工作。我還沒看過那個。最終,據我現在所知,一旦我到達那裡,插件似乎對我們團隊來說是最好的...
再次,我非常感謝您的所有幫助,對您的感激之情不勝感激,
授予
回覆:新手如何處理自訂直方圖、西格瑪功能和流程摘要我認為在這裡問而不是提出新主題是有意義的...
我已經制定了良好的流程,並為我們正在使用的小組製作了一個插件。為了了解更多信息,我希望僅添加“不合格項”部分中的“外部總計”行和“預期總體 PPM”列(在下面的捕獲中以紅色下劃線顯示):

我可以顯示該框,但沒有值...下面是該腳本的部分(第 50-52 行)和螢幕截圖:
Report(dist)[Outline Box("Nonconformance"), Table Box(1), String Col Box(1)] << Set Heading("Portion");
Report(dist)[Outline Box("Nonconformance"), Table Box(1), Number Col Box(1)] << Set Heading("Expected Overall PPM");
Report(dist)[Outline Box("Nonconformance"), Table Box(1)] << Filter Where(Contains({"Total Outside"}, Expected Overall PPM));
請注意,在螢幕截圖中,它還添加了“預期百分比”和“預期總體百分比”列,這是我不想要的。

我知道我缺少一些基本的東西...我嘗試使用項目的屬性來比較不同之處,但我沒有看到任何有價值的東西。我還嘗試了“保存腳本”工具,看看這是否有助於提供線索,但它使用“調度”命令,我也無法讓它工作...
另外,是否可以將「不合格」部分直接放在「流程摘要」下方和「整體西格瑪能力」上方?從我的搜尋結果來看,我並不這麼認為,但我可能也遺漏了一些東西。

謝謝你,
授予
回覆:新手如何處理自訂直方圖、西格瑪功能和流程摘要您可以使用 JMP 修改您希望首先顯示的列,並檢查 JMP 建立的腳本,看看 JMP 是否可以捕獲您希望執行的操作(在本例中它可以)。然後,您可以將其保留給分發腳本,也可以將其移到分發腳本之外。

在你的腳本中它可能看起來像這樣
Report(dist)[Outline Box("Nonconformance"), NumberColBox("Observed %")] << Visibility("Collapse");
Report(dist)[Outline Box("Nonconformance"), NumberColBox("Expected Within %")] << Visibility("Collapse");
Report(dist)[Outline Box("Nonconformance"), NumberColBox("Expected Overall %")] << Visibility("Collapse");
Report(dist)[Outline Box("Nonconformance"), NumberColBox("Expected Overall PPM")] << Visibility("Visible");
Report(dist)[Outline Box("Nonconformance"), Table Box(1)] << Filter Where(Portion == "Total Outside");
您也可以使用複製框來「複製」不合格項
ncob = Report(dist)[Outline Box("Nonconformance")];
(Report(dist)["Process Capability","? Capability","Process Summary"] << parent) << Append(
ncob << clone box;
);
(ncob << parent) << Set(0);
</CODE><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jthi_1-1729017828517.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1729017828517.png" style="width: 321px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1729017828517.png" style="width: 321px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1729017828517.png" style="width: 321px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1729017828517.png" style="width: 321px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_1-1729017828517.png" style="width: 321px;"><span class="lia-inline-image-display-wrapper" image-alt="jthi_1-1729017828517.png" style="width: 321px;"><img src="https://us.v-cdn.net/6038925/uploads/images/69147iBECE0693438ABAB9/jthi_1-1729017828517.png" role="button" title="jthi_1-1729017828517.png" alt="jthi_1-1729017828517.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P>
<P>但如果您不需要這些 JMP 平台的功能,我會考慮從不同部分建立自訂報告。透過這種方式,您可以更輕鬆地控制報告的外觀,並且使用者不會意外地嘗試使用那些甚至可能無法正常工作的功能。</P></LINGO-BODY><LINGO-SUB id="lingo-sub-805889" slang="en-US" mode="CREATE">回覆:新手如何處理自訂直方圖、西格瑪功能和流程摘要</LINGO-SUB><LINGO-BODY id="lingo-body-805889" slang="en-US" mode="CREATE"><P>啊!我會試著把我的注意力集中在你的訊息上並搞亂它。我在調度腳本中看到了可見性標誌(看起來與您的相同),但我沒有掌握如何像您一樣對它們進行網格劃分。</P><P> </P><P>是什麼促使您使用</P><PRE class="language-jsl"><CODE>Filter Where(Portion == "Total Outside");
而不是像其他一些那樣的列表標註。例如:
Filter Where(Contains({"LSL", "Target", "USL", "N", "Sample Mean"}, Stat))
謝謝賈莫!
回覆:新手如何處理自訂直方圖、西格瑪功能和流程摘要我用過
Filter Where(Portion == "Total Outside");
但如果您願意,您仍然可以使用“包含”(在您的腳本中,問題不包含,但使用錯誤的列“預期總體 PPM”而不是“部分”來進行比較)
Report(dist)[Outline Box("Nonconformance"), Table Box(1)] << Filter Where(Contains({"Total Outside"}, Portion));
我使用相等比較是因為您希望只顯示表格的單行。包含可用於多個項目,當您只有單一項目時(如本例),則沒有必要。
我改變它的原因是這樣的:
您可能會想“但是它是否有效有什麼關係嗎?”。基本上它不會,但是當您(或至少當我這樣做時)開始考慮程式碼時,它會稍微重要。對我來說,現在很明顯,該表中永遠不會有超過一個項目(或者如果有多個項目,則必須更改過濾的想法,這會讓您停下來)。
回覆:新手如何處理自訂直方圖、西格瑪功能和流程摘要Jarmo,謝謝您的精彩解釋。
回覆:新手如何處理自訂直方圖、西格瑪功能和流程摘要好的社群貼文的觸發因素是好的問題。
謝謝@GM-FPP 。
回覆:新手如何處理自訂直方圖、西格瑪功能和流程摘要謝謝@hogi,我很欣賞你的留言。