for 循环的数据过滤器你好,
我对脚本编写相当陌生。 我理解 for 循环,但我在这里需要一些帮助。
我无法在脚本指南中找到数据过滤器的 for 循环示例。 如果有人可以帮助我解决语法问题,那就太好了。
我想做的是,我有一个树形图,我需要使用数据过滤器表构建一个“for”循环,以将图形输出自动保存为 .png 文件。
我附上了一张图。 例如,条件 1:晶圆 11,选择 25C 的所有 Vpp 调整集和公式 NO(1 个图表)
条件 2:晶圆 12,选择 85C (0,11111) 的所有 Vpp 调整组和公式 NO(1 图)
条件 3:绘制晶圆 11(9 个图表)和晶圆 12 的所有调整集值(2 个图表)
如果我在代码中一项一项地完成,但不能一起完成,我就可以做到。
谢谢
回复:for循环的数据过滤器谢谢@大卫_伯纳姆, @Craige_Hales克雷格和@tx尼尔森
你们好棒!
回复:for循环的数据过滤器好的!回复:for循环的数据过滤器我下面给出的示例包含将跳过没有行的组合的代码
http://www.pega-analytics.co.uk/blog/scripting-data-filters/
回复:for循环的数据过滤器我明白发生了什么事。 感谢克雷格提供的非常好的解释。
我相信如果条件没有找到与条件关联的任何行,它就会中断并停止。
“数据表‘最终表’的Where子句导致没有行:Wafer ==“12”& Formula == Empty()”
相反,它可以继续进行以便可以继续使用循环进行绘图吗?
回复:for循环的数据过滤器在示例代码中,gb 是平台目的。 这报告() 函数向平台对象询问保存平台可见报表的 DisplayBox。 该平台不知道它周围有更多的 DisplayBox。 您必须使用 <回复:for循环的数据过滤器
正确的。或者 gb 从未设置过,或者 gb 已经关闭。
您可以使用
show(type(gb));
showproperties(gb);
在您的脚本中获取有关该对象的一些信息。 您应该在日志中看到类似这样的内容:
Type(gb) = "Scriptable";
Show Control Panel [Boolean] [Default On] (Displays or hides the control panel.)
Show Legend [Boolean] [Default On] (Displays or hides the legend to the right of the graph.)
Legend Position [Enum] {Right, Bottom, Inside Left, Inside Right}
Legend Settings [Action](Opens a dialog to modify the properties of the legend.)
Continuous Color Theme [Action](Se .... < a lot more follows>
在 JMP 中,“可编写脚本”对象是类似于展示盒或一个平台(或许多其他可能性)有方法。 DisplayBox 有一个名为家长与 << 运算符一起使用来获取 DisplayBox 的父框。 ShowProperties 函数列出了 DisplayBox 知道的所有方法。 您可以在脚本索引(帮助菜单下)中以更易于阅读的形式查看这些内容。
当您的脚本显示“期望可编写脚本...”时,这意味着 gb 变量不包含可编写脚本的对象。
回复:for循环的数据过滤器从你的评论来看,我相信你对克雷格发布的剧本有误解。在他的代码中,一次打开的图形生成器实例绝不会超过 1 个。指向图形构建器的指针,“gb”指向图形构建器的当前执行。它创建图形生成器输出的图片对象,并将其保存到文件中。然后它关闭图形构建器对象(gb<
如果您的代码正在生成多个图形生成器,并且每个生成器都使用“gb”作为指向图形生成器实例的句柄,则“gb”仅指向最后一个图形生成器实例。
回复:for循环的数据过滤器嗨克雷格,
我确实实现了并开始扩展 for 循环。
我在访问或评估 'Send' 时收到此错误,Send Expects Scriptable Object{630},Report( gb ) << /*###*/parent/*###*/... 是不是因为打开的窗口太多而JSL不知道我指的是哪个gb?回复:for循环的数据过滤器谢谢克雷格回复:for循环的数据过滤器dt = Open( "$sample_data/big class.jmp" );
ages = Data Table( "big class" ) << Summary( Group( :age ), Freq( "None" ), Weight( "None" ) );
sexes = Data Table( "big class" ) << Summary( Group( :sex ), Freq( "None" ), Weight( "None" ) );
Delete Directory( "$temp/myPics" );
Create Directory( "$temp/myPics" );
For( iage = 1, iage <= N Rows( ages ), iage++,
thisAge = ages:age[iage];
For( isex = 1, isex <= N Rows( sexes ), isex++,
thisSex = sexes:sex[isex];
Eval(
Eval Expr(
gb = dt << Graph Builder(
Size( 508, 438 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
where( age == Expr( thisAge ) & sex == Expr( thisSex ) )
)
)
);
parentBox = (Report( gb ) << parent)< picture = parentBox << getpicture;
picture << saveImage( "$temp/myPics/age" || Char( thisAge ) || "sex" || Char( thisSex ) || ".png", "png" );
// optional: Open( "$temp/myPics/age" || Char( thisAge ) || "sex" || Char( thisSex ) || ".png" );
gb << closewindow;
);
);
Close( ages, "nosave" );
Close( sexes, "nosave" );
Show( Files In Directory( "$temp/myPics" ) );
看起来您可能需要抓住图形生成器的“祖父母”显示框;父)<
screen capture of large icons of graphs saved by scriptscreen capture of large icons of graphs saved by script脚本保存的图形大图标的屏幕截图
回复:for循环的数据过滤器是的,但是图形生成器也接受 where 子句。
最好的,
中号
回复:for循环的数据过滤器我相信该示例适用于 y x x 分布。 我正在尝试在图形生成器中为树形图执行此操作。 我会尝试一下。 谢谢你,M_安德森
回复:for循环的数据过滤器你可以尝试@Craige_Hales在这个问题上的回答——关联。 与尝试使用本地数据过滤器相比,在平台调用中添加 where 子句可能是一种更优雅的方式来完成您想要的操作。