需要帮助 - JMP 15 中列切换器的“设置脚本”行为已更改如果为列切换器设置脚本,则在 JMP 14 中,脚本在列切换完成后运行,但在 JMP 15 中,它在列切换之前运行。
以下示例使用列切换器创建图形构建器图,并将列切换器脚本设置为打印 JMP 版本和 Y 轴标题。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
nw = new window("Test",
gb = Graph Builder(
Size( 528, 464 ),
Show Control Panel( 0 ),
Variables( X( :name ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ) ),
Column Switcher( :height, {:height, :weight} )
)
);
nw[Listboxbox( 1 )] << set script(
print(JMP Version());
print(report(gb)[TextEditBox(4)]<< Get Text());
);
如果在 JMP 14 中运行脚本并单击“权重”,则会得到以下输出。该脚本在列切换后运行。
"14.1.0"
"weight"
但是,如果您在 JMP 15 中运行相同的脚本,则输出会有所不同。该脚本在列切换发生之前运行。
"15.1.0"
"height"
这种行为改变破坏了我的一个 JMP 脚本,该脚本在切换列后设置轴最小值/最大值。有什么方法可以在 JMP 15 中的列切换后强制脚本运行?谢谢。
回复:需要帮助 - JMP 15 中列切换器的“设置脚本”行为已更改我将此问题提交给 JMP 支持并得到了他们的回复:
开发团队能够确定事件行为的变化是有意的。
目前,您可以使用 Jim Nelson 在社区中建议的解决方法。 但是,JMP 15 的下一个维护版本计划采用一种新方法,允许您将脚本设置为列切换器参考。 这将确保脚本在适当的时间运行。 我们预计此功能将在 7 月的时间范围内可用。
回复:需要帮助 - JMP 15 中列切换器的“设置脚本”行为已更改@paul_vezzetti感谢您的回复,但不幸的是,能够读取新列名并不意味着该图已更新为新列。在 JMP 15 中,尽管可以从列切换器中读取新列名,但在脚本执行后仍会发生列切换。因此,在我的用例中,我想为要切换到的新列设置轴比例,但这不起作用,因为 JMP 在我设置比例后切换到新列,这完全重置了轴。
回复:需要帮助 - JMP 15 中列切换器的“设置脚本”行为已更改你也可以试试这个:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
nw = New Window( "Test",
gb = Graph Builder(
Size( 528, 464 ),
Show Control Panel( 0 ),
Variables( X( :name ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ) ),
Column Switcher( :height, {:height, :weight} )
)
);
nw[Listboxbox( 1 )] << set script(
Print( JMP Version() );
Print( nw[Listboxbox( 1 )] << Get Selected() );
);
回复:需要帮助 - JMP 15 中列切换器的“设置脚本”行为已更改谢谢! 此解决方案适用于 JMP 14 和 15。回复:需要帮助 - JMP 15 中列切换器的“设置脚本”行为已更改我会将您的问题提交给 JMP Support,以获得 JMP 的官方更改原因,但是,如果您将脚本附加到框架框,您将获得所需的结果
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
nw = new window("Test",
gb = Graph Builder(
Size( 528, 464 ),
Show Control Panel( 0 ),
Variables( X( :name ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ) ),
Column Switcher( :height, {:height, :weight} )
)
);
nw[framebox( 1 )] << add graphics script(
print(JMP Version());
print(report(gb)[TextEditBox(4)]<< Get Text());
);