新手如何自定义直方图、Sigma 能力和流程摘要嗨。我是新手。在开始学习脚本之前,我想确认一下我的方法是否正确。我们想要一种简单的方法来创建下面的简单分布报告,该报告可以为用户选择的列创建,通常为 30 个数据点,如下图所示,我们希望删除带有红线的项目:

数据表的一个例子是:

下面是我使用时系统创建的脚本:保存脚本/到数据表:
分配(
连续分布(
柱( :OD ),
水平布局( 1 ),
直方图( 0 ),
垂直( 0 ),
制程能力(
使用列属性规范,
过程能力分析(不合格( 0 ) )
)
),
仅限直方图,
发送至报告(
Dispatch( {"OD", "工艺能力", "OD 能力", "直方图"}, "1",
比例盒,
{最小值( 2.1388234375 ), 最大值( 2.1636765625 ), 增量( 0.005 ),
小勾号( 5 )}
)
)
(英文):
我认为没有脚本就无法完成此操作。如果不是这样,请告诉我。
我打算做的是尝试学习如何编写脚本,以便用户可以选择要使用的列,其中上面的脚本仅使用列“OD”。希望通过运行脚本,可以提供上述基本报告。
然后开始寻找脚本更改以删除我们用红色划掉的条目。
这种方法是否幼稚?有没有更好的方法?
感谢您的任何意见,
授予
质量与工艺工程回复:新手如何自定义直方图、Sigma 能力和流程摘要对于功能表,这相当容易,因为您可以使用如下过滤器
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));

回复:新手如何自定义直方图、Sigma 能力和流程摘要谢谢 Jarmo 抽出时间做这件事。这为我申请我们的职位打下了良好的基础。我很感激你的帮助。
我会尝试一下,看看我是否可以为目标列做一个用户提示,因为名称会有所不同,然后在此基础上进行构建。至少我可以用我目前(有限的)知识为某些部分场景定制脚本。对于我们的用户来说,这可能对他们更好。无论如何,再次感谢您。
回复:新手如何自定义直方图、Sigma 能力和流程摘要开始使用 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 的良好资源
回复:新手如何自定义直方图、Sigma 能力和流程摘要谢谢 Jarmo!我已经开始学习脚本指南了。我可能没有足够的耐心,但我会继续努力。:)
我可以请您再展示一个变化吗?我认为这对我有很大帮助。您能否在脚本中添加一个移动平均图,将其添加到 Sigma Capabilities 下方(基本上在底部)?我在下面用半导体文件中的 NPN1 做了一个示例。我在脚本调用中遗漏了一些东西,我认为这将有助于我理解它。

我可以想象你会翻白眼因为下一个问题从根本上表明我不太了解 JMP。像这样的脚本作为用户打开并运行的脚本文件是否更有意义,还是将此脚本保存到数据表中并从那里运行更有意义?这只是偏好还是有一些优势?
如果除了 Kudo 之外还有其他方式来感谢你的帮助,请告诉我。你的帮助让我省去了很多麻烦。
再次感谢你,
授予
回复:新手如何自定义直方图、Sigma 能力和流程摘要您可以使用工作流构建器构建类似的东西,因此根据您正在做的事情,利用它可能是一个好主意(并且这是使用 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 工作流,修复分布可能会有点困难),或者创建一个插件,用户可以根据需要在自己的表上运行该插件。对于插件,我最有可能让用户选择多个列或使用列切换器,并且最好实施一些额外的检查(表是否打开,所选列是否有规格限制等)。
编辑:修复了控制图生成器中的硬编码值
回复:新手如何自定义直方图、Sigma 能力和流程摘要Jarmo,谢谢你。这为我开始努力打下了良好的基础。我一直在修改代码,这确实很有帮助。看到新的窗口代码确实帮助了我一些我所缺少的东西。
我还将使用那个工作流生成器。我还没有看过那个。最终,从我现在所知道的来看,一旦我到达那里,Addin 似乎最适合我们的团队......
再次,我非常感谢你们的帮助,
授予
回复:新手如何自定义直方图、Sigma 能力和流程摘要我认为在这里问更有意义,而不是提出新话题......
我已经制定了良好的流程,并为我们小组制作了一个正在使用的插件。为了了解更多信息,我希望仅添加“总外部”行和“不合格”部分中的“预期总体 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));
请注意,在屏幕截图中它还添加了“预期在 % 之内”和“预期总体 %”列,这是我不想要的。

我知道我遗漏了一些基本的东西……我尝试使用项目的属性来比较不同之处,但我没有看到任何值。我还尝试了“保存脚本”工具,看看它是否有助于提供线索,但它使用了 Dispatch 命令,我也无法让它工作……
另外,是否可以将“不符合项”部分直接放在“流程摘要”下和“整体 Sigma 能力”上?从我搜索的内容来看,我认为不是这样,但我可能也遗漏了一些东西。

谢谢你,
授予
回复:新手如何自定义直方图、Sigma 能力和流程摘要您可以使用 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">回复:新手如何自定义直方图、Sigma 能力和流程摘要</LINGO-SUB><LINGO-BODY id="lingo-body-805889" slang="en-US" mode="CREATE"><P>啊!我会试着理解你的信息并弄明白。我看到了 Dispatch 脚本中的 Visibility 标志(看起来和你拥有的一样),但我不明白如何像你一样将它们结合起来。</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))
谢谢你,Jarmo!
回复:新手如何自定义直方图、Sigma 能力和流程摘要我用过
Filter Where(Portion == "Total Outside");
但如果您愿意,您仍然可以使用 Contains(在您的脚本中,问题不是包含,而是使用错误的列预期总体 PPM 而不是部分来进行比较)
Report(dist)[Outline Box("Nonconformance"), Table Box(1)] << Filter Where(Contains({"Total Outside"}, Portion));
我使用了相等比较,因为您希望仅显示表格的一行。包含可用于多个项目,而当您只有单个项目时(如本例中),则没有必要。
我改变它的原因是这样的:
您可能会想“但是如果它有效,这重要吗?”基本上它不重要,但是当您(或者至少当我)开始思考代码时,它会稍微重要一些。对我来说,现在很明显,该表中永远不会有超过一个项目(或者如果有多个,则必须更改过滤的想法,这会让您停下来一点)。
回复:新手如何自定义直方图、Sigma 能力和流程摘要Jarmo,谢谢您出色的解释。
回复:新手如何自定义直方图、Sigma 能力和流程摘要好的社区帖子的触发因素是好的问题。
谢谢@GM-FPP 。
回复:新手如何自定义直方图、Sigma 能力和流程摘要谢谢@hogi,我很感谢你的留言。