编写列切换器脚本以实现控制图上 Y 变量的变化我有一个包含大量响应(许多列)的数据表。 所有这些都可以有效地绘制控制图。
当我添加列切换器时,我可以按照预期轻松地在响应(不同列)之间切换以更新控制图,以便我可以立即查看感兴趣的变量。
唯一的缺点是,默认情况下,x 轴的长度始终相同,但每列中的数据数量不同;有时很多,但有时不是。
为了使 x 轴适应任何给定列中的数据数量,我可以这样做:
nData = N Rows() - Col N Missing( Column( 1 ) );
ccReport = cc << Report;
axisbox = ccReport[axis box( 1 )];
axisbox << Max( nData + 3 ) << inc( Ceiling( (nData + 3) / 15 ) );
这对于第一个控制图非常有用,但是当我使用列切换器选择另一个变量时,x 轴再次太长,返回到其默认设置。 (如果 N Rows() 是 3,000,但对于一个变量我有 60 个数据,则生成的图表看起来很愚蠢,因为 x 轴太长。)
使用 JSL,我如何编写脚本,以便每次使用列切换器选择另一列时,我都可以使用上面的代码(或等效代码)来调整 x 轴以很好地适应相关变量的实际数据数量?
我看到这个语法“ColumnSwitcherObject << Get Current;”返回列的名称,但每次使用列切换器更新时如何通过 JSL 进行访问?
谢谢你的帮助。
自动化和脚本编写大规模定制质量和工艺工程回复:编写列切换器脚本以实现控制图上 Y 变量的变化谢谢,吉姆。 现在效果很好。
回复:编写列切换器脚本以实现控制图上 Y 变量的变化而不是设置
ccReport = cc << Report;
我认为你在使用它时应该从源码中引用它
report(cc)[AxisBox(1)] << max(X+1);
下面是一个示例脚本,它从 cc 中获取正确的引用
names default to here(1);
dt=current data table();
cc = Control Chart Builder(
Size( 534, 464 ),
Show Control Panel( 0 ),
Show Capability( 0 ),
Variables( Y( :weight ) ));
cs = cc << Column Switcher( :weight, {:height, :weight} );
report(cc)[FrameBox(1)]<< add graphics script( show(cs<<GET current=""></GET>回复:编写列切换器脚本以实现控制图上 Y 变量的变化谢谢,吉姆。
正如您所建议的,使用框架框,我确实可以在嵌入式日志中显示选择用于更新控制图的列。 (我想在 12 列之间切换,并且每列都有不同的数据数量,因此希望在每种情况下重新缩放 x 轴以反映所选列中的数据数量。)
我很容易捕获所选列:
ccReport[FrameBox(1)]<< add graphics script(
cName = cs << Get Current;
show(cName);
If(cName == "JW004",
show("JW004 selected");
,
cName == "JW001",
show("JW001 selected");
,
);
在语法的其他部分,我可以使用例如轻松更改 x 轴
ccReport = cc << Report;
axisbox = ccReport[axis box( 1 )];
axisbox << max(x+1); // where x is the no. of data in the column
如果我将轴盒语法放入框架盒中,问题就会出现。 错误之一是
Send Expects Scriptable Object in access or evaluation of 'Send' , ccReport[axis box( 1 )] << /*###*/Max( 200 ) /*###*/
我尝试了一些方法,但没有成功。 您是否有任何提示,以便我可以继续从图形脚本中访问轴框? 将不胜感激。
回复:编写列切换器脚本以实现控制图上 Y 变量的变化我认为您可以通过将图形脚本附加到控制图中的 FrameBox() 来解决您的问题。只要 FrameBox() 中发生更改,该脚本就会运行。下面是一个简单的脚本,我相信您应该能够在此基础上进行构建
names default to here(1);
dt=current data table();
cc = Control Chart Builder(
Size( 534, 464 ),
Show Control Panel( 0 ),
Show Capability( 0 ),
Variables( Y( :weight ) ));
cs = cc << Column Switcher( :weight, {:height, :weight} );
report(cc)[FrameBox(1)]<< add graphics script( show(cs<<GET current=""></GET>