使用树结构中的对象从绘图输出中获取数据的问题<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />嗨,我想得到各种规格限制情景的后果数据。 我之前在另一个循环遍历列的脚本中完成了它,将每列作为列表,select_where()数据高于/低于规范限制,但我希望这次使用本机JMP信息。
当存在限制时,JMP的分发平台将显示cpk分析和后果。 当我检查树结构时,后果信息显示在名为“numbercolbox(4)”的对象/列表中。 我已经想出了如何获取余量数据,我可以填充规范限制并重新运行每个限制集的分布,但我想知道这个解决方案的可靠性。 例如,如果其他人有一组不同的首选项,那么numbercolbox(4)是否总是要提取余量数据?
我想这是一个替代xpaths,但我没有太多的信息。如果这是一个不错的解决方案,并且有人有相关文档,请告诉我。
附件是一个脚本,它做我想要的,并为我工作。你可以运行它,看看我在说什么。它使用样本数据。
要在JMP输出(图表等)上查看树结构,请使窗口大于本机窗口,然后在最底部或最右侧区域中按住Ctrl键并右键单击,然后选择显示树结构。见下文。
谢谢,
-麦克风

Re:使用树结构中的对象从绘图输出中获取数据的问题我更改了xpath代码以使其更简单(至少对我而言),这适用于我需要它做的事情。 但是,我仍然很好奇为什么我上面发布的代码不起作用,因为你使用的更通用的结构/代码将非常有用。
谢谢,
麦克风
名称默认为此处 ( 1 ) ;
的testvar = 0 ;
的testvar = 1 ; //注释后续运行
如果 ( 的testvar ,
打开 ( “$ SAMPLE_DATA \ Semiconductor Capability.jmp” ) ;
myDist = 分配 (
堆 ( 1 ) ,
持续分配 (
柱 ( : NPN1 ) ,
自定义摘要统计信息 (
稳健的意思 ( 1 ) ,
强大的标准开发 ( 1 )
)
) ,
持续分配 (
柱 ( : PNP1 ) ,
自定义摘要统计信息 (
稳健的意思 ( 1 ) ,
强大的标准开发 ( 1 )
)
) ,
持续分配 (
柱 ( : PNP2 ) ,
自定义摘要统计信息 (
稳健的意思 ( 1 ) ,
强大的标准开发 ( 1 )
)
)
) ;
) ;
reportObj = myDist << XPath的 ( “// OutlineBox [text()='摘要统计']” ) ;
对于 ( 一世 = 1 ,一世 <= NITEMS ( reportObj ) ,一世 ++,节目 ( reportObj [ 一世 ] << 得到头衔 ) ; ) ;
strList = {} ;
reportObj = myDist << XPath的 ( “// OutlineBox [text()='Summary Statistics'] // StringColBox” ) ;
// for(i = 1,i <= nitems(reportObj),i ++,show(reportObj <<获得); strList = reportObj << get;);
节目 ( reportObj [ 1 ] << 得到 ) ;
strList = reportObj [ 1 ] << 得到 ;
尝试 ( rMnIndx = LOC ( strList , “健壮的意思” ) , rMnIndx = - 1 ) ;
尝试 ( rStdIndx = LOC ( strList , “稳健的标准偏差” ) , rStdIndx = - 1 ) ;
statList = {} ;
reportObj = myDist << XPath的 ( “// OutlineBox [text()='Summary Statistics'] // NumberColBox” ) ;
// for(i = 1,i <= nitems(reportObj),i ++,show(reportObj <<获得); statList = reportObj << get;);
节目 ( reportObj [ 1 ] << 得到 ) ;
statList = reportObj [ 1 ] << 得到 ;
如果 ( rMnIndx > 0 & rStdIndx > 0 ,
robustMean = statList [ rMnIndx ] ;
robustStd = statList [ rStdIndx ] ;
,
robustMean = - 999 ;
robustStd = - 999 ;
) ;
节目 ( robustMean , robustStd ) ;
Re:使用树结构中的对象从绘图输出中获取数据的问题嗨菲利普,
我终于到了检查xpath代码,我遇到了麻烦。我用你的海报作为参考。 你能帮我搞清楚我做错了什么吗?
另外,我想我以前见过这个,但我不记得了...... 是什么 ' 。 ' 在里面 ” list_testSS.Key “变量名称为?
似乎让人想起C中的结构,但我找不到它的jsl文档。我不确定它是否在我的代码中正确设置。
谢谢,
麦克风
名称默认为此处 ( 1 ) ;
打开 ( “$ SAMPLE_DATA \ Semiconductor Capability.jmp” ) ;
myDist =
分配 (
堆 ( 1 ) ,
持续分配 (
柱 ( : NPN1 ) ,
水平布局 ( 1 ) ,
垂直 ( 0 ) ,
左边的轴 ( 1 ) ,
自定义摘要统计信息 (
Std Err Mean ( 0 ) ,
上均值置信区间 ( 0 ) ,
较低的平均置信区间 ( 0 ) ,
N失踪 ( 1 ) ,
范围 ( 1 ) ,
稳健的意思 ( 1 ) ,
强大的标准开发 ( 1 )
)
)
) ;
reportObj = myDist << XPath的 ( “// OutlineBox [text()='Summary Statistics'] / ancestor :: OutlineBox [last()]” ) ;
list_groupName = reportObj << 的getTitle ;
list_testSS.Key = ( reportObj << XPath的 ( “// * [contains(text(),'Summary Statistics')] / following-sibling :: * // StringColBox” )) << 得到 ;
list_testSS.Val = ( reportObj << XPath的 ( “// * [contains(text(),'Summary Statistics')] / following-sibling :: * // NumberColBox” )) << 得到 ;
list_levelString = ( reportObj << XPath的 ( “// OutlineBox [text()='Long Term Sigma'] // StringColBoxHeader [text()='Capability'] / ..” )) << 得到 ;
list_levelMeans = ( reportObj << XPath的 ( “// OutlineBox [text()='Long Term Sigma'] // NumberColBoxHeader [text()='Index'] / ..” )) << 得到 ;
Re:使用树结构中的对象从绘图输出中获取数据的问题xpath的一个明显优势是当JMP报告窗口中有多个displaybox对象时。例如,假设你做了一些分析并结束了
有100个Outlinebox,你可以用xpath做:
rpt << xpath(“// OutlineBox”)
并返回所有大纲框的引用列表。(其中rpt引用了 JMP报告窗口)
使用传统的显示框脚本,您必须首先知道生成了多少脚本,然后从1循环到N,并通过其索引访问每个大纲框。索引可能是一个问题,特别是如果序列不清楚(例如嵌套的轮廓框)。这可以是更多的编码步骤。
就速度而言,XPath的执行速度要快得多,特别是对于大型群组。我不认为它对你所描述的“单发”情景有所影响,但是必须进行正式的时间研究。
Re:使用树结构中的对象从绘图输出中获取数据的问题谢谢,我一直在寻找那样的文档。我会玩一下它,看看它是怎么回事。看起来很简单但也依赖于语言,这对我所需要的可能是好的。
为什么xpath比显示树脚本更有效?它只是更有效的编码是否能更快地获取信息?出于这个问题的目的,让我们假设它只是一个被返回的对象,就像一个分发图片框,你知道它的名字或编号。如果这样做100或1000次,是否明显快于另一次?似乎生成报告本身(在提取对象之前)是执行时间的位置。
Re:使用树结构中的对象从绘图输出中获取数据的问题在今年的会议上,XPath上有一张非常好的海报。
https://community.jmp.com/docs/DOC-8116
他们通过JMP结构经历了一些现实生活中的例子。
Re:使用树结构中的对象从绘图输出中获取数据的问题谢谢!现在对我来说很明显。;-)我会看看是否有任何用户正在使用其他语言,并为其他语言添加一些钩子。 它不会是防弹的,但它应该适合我们的目的。 谢谢。
Re:使用树结构中的对象从绘图输出中获取数据的问题说明显而易见的,但请注意,如果脚本需要在多个区域设置中运行,则在按名称索引显示框时必须小心。
Re:使用树结构中的对象从绘图输出中获取数据的问题谢谢,这个数字(在我的情况下是4)可以改变的事实是我所期望的。您的解决方案完美无缺
我也在使用变量(列表)设置上限和下限规格限制时遇到问题。 当我使用硬编码列表时,我在示例中它可以正常工作,但我不能只使用一个简单的列表元素。我可能没有正确使用eval(substitute()),但根据我的经验,这是JSL最令人困惑的部分之一。
对于如何解决这个问题,有任何的建议吗?
。
| | | mySpecsExpr = expr(作为列(yParamNames )<< set property(“Spec Limits”,{aaa,bbb})); |
| | | 节目(EVAL(DLIST [1]) ,eval(dList [2]) ); // < - 这些在日志窗口中评估得很好 |
| | | eval(替换(mySpecsExpr,expr(aaa),eval(dList [1]) ,expr(bbb),eval(dList [2]) )); |
编辑:其实我能够根据这个如何解决这个问题: 46953 - 如何使用变量编写列属性脚本
这有效。 但如果有人有更简单的答案,我会很感激。
| | | | 的eval( |
| | | | | Eval Expr( |
| | | | | | 作为列(yParamNames )<<设置属性( |
| | | | | | | “规格限制”, |
| | | | | | | {LSL(Expr(eval(dList [1]) )),USL(Expr(eval(dList [2]) ))} //,Target(Expr(tLimit)),Show Limits(0)} |
| | | | | | ) |
| | | | | ) |
| | | | ); |
Re:使用树结构中的对象从绘图输出中获取数据的问题我不知道这个特定平台或节点的编号有多强大。但总的来说,编号并不固定,但可能会随报告的整体复杂程度而变化。
添加特定显示框的另一种方法是使用其名称。也支持通配符。我认为名称比编号更健壮,因为它们很少在JMP版本之间改变,而布局和默认选项数量可能因版本和偏好而异。
一世在您的示例脚本的上下文中,全部下面三行都会返回相同的结果:
报告 ( distObj ) 数字Col Box ( 4 )] << 得到 ;
报告 ( distObj ) 数字Col Box ( “%实际” )] << 得到 ;
报告 ( distObj ) 数字Col Box ( “%?” )] << 得到 ;