列切换器重置图表并删除脚本对象你好,最近(移至 JMP17 后)每当我使用列开关时,它都会重置图表。删除图例、恢复图形大小并删除我在图形上放置的脚本对象。这发生在变异性图表上,但类似的问题也发生在轮廓图上,其中列开关实际上复制了脚本对象并删除了图例。阻止它这样做的唯一方法是删除自动重新计算,这对轮廓图有效,但不适用于其他图表分析。
我该如何防止这种情况发生并在滚动列切换器时保持所有图表设置和脚本对象完好无损?
基础数据分析与建模回复:列切换器重置图表并删除脚本对象在 JMP 18+ 中,带有列切换器(和其他功能)的自定义报告在许多情况下得到了改进。早期版本中的问题往往发生在正在更改的列名称出现在自定义显示项的标题或文本中时。以下脚本在 JMP 17 中不起作用,但在 JMP 18 中起作用。
dt = Open( "$SAMPLE_DATA/Variability Data/2 Factors Crossed.jmp" );
vc = dt << Variability Chart(
Y( :Measurement ),
X( :Operator, :part# ),
Always use column properties( 1 ),
);
cs = vc << Column Switcher( :Measurement, {:Measurement, :Standard} );
Wait(1);
Report(vc)[FrameBox(1)] << Frame Size(400,200);
Report(vc)[FrameBox(2)] << Frame Size(400,200);
Wait(1);
cs << Set Current("Standard");
在可变性报告中,有许多情况下列名用于标题或标签。当名称单独使用时,自定义可能工作正常。更常见的问题情况是名称嵌入另一个字符串中,如以下大纲标题所示:

不幸的是,JMP 17 及更早版本的唯一解决方案是使用 JSL 切换器回调脚本来重新应用自定义。
回复:列切换器重置图表并删除脚本对象您能否分享一个用于重新应用自定义的 JSL 切换器回调脚本的示例?我没有这方面的经验,也不熟悉这个解决方案。感谢您的解释
回复:列切换器重置图表并删除脚本对象您好@ChiSquareShark9 - 下面是上述脚本的扩展版本,每次调用列切换器时都会重置帧大小。在 JMP 17 中,当帧恢复到默认大小然后又恢复到所需大小时,会出现短暂的闪烁。在 JMP 18 中,没有闪烁,回调处理程序也没有必要。在这种情况下,帧大小在新平台启动期间会保留。
NamesDefaultToHere(1);
dt = Open( "$SAMPLE_DATA/Variability Data/2 Factors Crossed.jmp" );
vc = dt << Variability Chart(
Y( :Measurement ),
X( :Operator, :part# ),
Always use column properties( 1 ),
);
cs = vc << Column Switcher( :Measurement, {:Measurement, :Standard} );
Wait(1);
Report(vc)[FrameBox(1)] << Frame Size(400,200);
Report(vc)[FrameBox(2)] << Frame Size(400,200);
Wait(1);
pre = Function( {currentColumn, nextColumn, switcher},
size1 = Report(vc)[FrameBox(1)] << Get Size;
size2 = Report(vc)[FrameBox(2)] << Get Size;
);
post = Function( {previousColumn, currentColumn, switcher},
Report(vc)[FrameBox(1)] << Frame Size(size1[1], size1[2]);
Report(vc)[FrameBox(2)] << Frame Size(size2[1], size2[2]);
);
handler = cs << Make Column Switch Handler( pre, post );
回复:列切换器重置图表并删除脚本对象谢谢!