JSL - 用于选择变量然后在图形生成器中绘制的复选框大家好,
我正在尝试制作一个可以这样工作的脚本:
1. 打开一个新窗口,显示“选择要绘制的参数”,其中包含每个参数的复选框,操作员可以通过勾选参数来选择要绘制的参数。
2. 然后,对于勾选的项目,打开带有相应变量的图形生成器。
我目前能够迈出第一步(新窗口和带有复选框的列表),并且我知道如何编写脚本来创建图形,但我错过了它们之间的链接......我最初考虑单独调用每个复选框,然后执行一系列“if”,例如“如果 cb1 被勾选,则绘制图表,如果没有,则如果 cb2 被勾选等等......”。 我尝试使用以下脚本进行训练,但无论我是否勾选该框,它最终总是显示“失败”,因此它并没有真正选中该框:
Names Default To Here( 1 );
New Window( "Choose the parameters to be plotted",
cb1 = Check Box ("Parameter 1",0),
cb2 = Check Box ("Parameter 2",0)
);
wait(5);
If (cb1 == 1,
Graph Builder(
Variables(
X( :Name( "Process duration" ) ),
Y( :Name( "Parameter 1" ) ) ) ),
New Window( "Failed"));你知道该怎么做吗?
@马丁德梅尔
回复:JSL - 用于选择变量然后在图形生成器中绘制的复选框对此感到抱歉。 与此同时,我也对马克表示敬佩。回复:JSL - 用于选择变量然后在图形生成器中绘制的复选框马克:)回复:JSL - 用于选择变量然后在图形生成器中绘制的复选框感谢马丁,提供了这个有用的脚本。回复:JSL - 用于选择变量然后在图形生成器中绘制的复选框我刚刚测试了这个解决方案,效果非常好,谢谢!!回复:JSL - 用于选择变量然后在图形生成器中绘制的复选框例子:
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dialog = Column Dialog(
col = Col List( "X, Factor", Min Col( 1 ), Max Col( 1 ) )
);
If( dialog["Button"] == -1, Throw( "User cancelled" ) );
Remove From( dialog );
Eval List( dialog );
x = col[1];
dt << Graph Builder(
Size( 534, 454 ),
Show Control Panel( 0 ),
Variables( X( x ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 3 ) ) )
);
回复:JSL - 用于选择变量然后在图形生成器中绘制的复选框我不确定是否明白
我明白使用列对话框要求操作员选择列的意义,但我仍然不知道如何将其与自动图形构建链接起来?回复:JSL - 用于选择变量然后在图形生成器中绘制的复选框好的,有道理。 即使这样,您也可以使用列对话框,但您需要稍微调整脚本以使用正确的变量名称。 好处是您可以使用要在脚本中进一步使用的自定义变量名称,并消除对表变量名称的依赖。 您仍然可以使用 if_else 结构,但可以使用自己的名称来代替 :age,这使得脚本更通用,通常也更健壮。回复:JSL - 用于选择变量然后在图形生成器中绘制的复选框我使用的 Choose() 方法适用于单选框,但对于复选框输入情况没有那么有用 - 它只允许执行其中一个语句。
尝试类似的方法:
If(cb<<GET></GET>
请注意,CheckBox<
http://www.jmp.com/support/help/en/15.1/#page/jmp/display-functions.shtml#ww2548850
回复:JSL - 用于选择变量然后在图形生成器中绘制的复选框嗨马丁,
实际上我没有提到全貌:我已经有一个脚本可以一一构建所有图形,将它们保存到日志中,然后关闭图形生成器。 所以在这个脚本的最后,我有一本包含所有图表的日记。
现在我想向该图添加第一步,即变量选择。 因此,我需要操作员选择他想要的内容,然后对于所有选定的变量,第二个票据图生成器 -> 日志应该适用。
那有意义吗?
回复:JSL - 用于选择变量然后在图形生成器中绘制的复选框可能不完全是您所需要的,但如果您想为每个选定的变量创建一个图表,您可能需要考虑一个列对话框,让操作员选择他想要在 X 和 Y 角色中绘制的变量,然后将其绘制为每个选定的变量:
https://www.jmp.com/support/help/en/15.1/?os=win&source=application#page/jmp/construct-a-column-dialog.shtml#
Names Default to Here(1);
dt = Open("$SAMPLE_DATA/Tablet Production.jmp", Invisible);
cdb = Column Dialog("Add continuous variables you want to plot against Dissolution" ,
colxx = ColList( "X", Min Col( 1 ), Modeling Type( "Continuous" ) ),
);
show(cdb);
Eval List(cdb[1::N Items(cdb)-1]);
Graph Builder(
Size( 526, 454 ),
Show Control Panel( 0 ),
Variables( X( colxx[1] ), Y( :Dissolution )),
Elements( Points( X, Y, Legend( 3 ) ), Line Of Fit( X, Y, Legend( 5 ) ) ),
Column Switcher( colxx[1], colxx )
);
回复:JSL - 用于选择变量然后在图形生成器中绘制的复选框我尝试在您的示例中将单选框更改为复选框,但即使选择了多个框,它也只执行一个图形(实际上它不适用于高度,我不知道为什么)... 我想我仍然怀念那个剧本中的一些东西:
Names Default To Here( 1 );
dt=Open("$SAMPLE_DATA/Big Class.jmp");
rc = New Window("Choose the parameters to be plotted",
cb = Check box ({"weight", "height", "sex"}),
Button Box("Ok",
Choose(cb<<GET></GET>
回复:JSL - 用于选择变量然后在图形生成器中绘制的复选框在这种情况下,您可以保留复选框()显示您最初使用的 - 从您的示例中我不清楚如果两个项目(或两者都没有)都被选中,那么输入将如何使用。如果您想要一个且仅一个响应,RadioBox 是一个很好的控件,但是您可以将任一输入方法与任何一组控件一起使用,包括文本编辑框()用于字符串输入或数字编辑框()用于数字输入。
回复:JSL - 用于选择变量然后在图形生成器中绘制的复选框这看起来很有希望,非常感谢! 然而,在您的建议中,它要么是一个框,要么是另一个框,但不能同时是两个框,而我希望根据需要勾选尽可能多的框...... 我应该在你的脚本中更改什么?
回复:JSL - 用于选择变量然后在图形生成器中绘制的复选框当提示在对话框中输入时,有两种常见的操作方法:
1. 使用模式对话框在等待输入时暂停脚本的执行:
Names Default To Here( 1 );
dt=Open("$SAMPLE_DATA/Big Class.jmp");
// Prompt for the input
rc = New Window("Choose the parameters to be plotted",
<<MODAL></MODAL>// Launch report if Ok was pressed
if (rc["Button"] == 1,
// Ok pressed
Choose (rc["rb"],
Graph Builder(Variables(X(:age), Y(:weight))),
Graph Builder(Variables(X(:age), Y(:height)))
);
,
// Cancel
"Cancel"
)
在您的脚本中,变量“cb1”是一个 DisplayBox。在本例中,<<返回结果选项将所有显示框信息转换为结果数据。在模式对话框中,在继续执行之前会删除这些框,因此这一点很重要!
2. 将对话框的“操作”部分作为按钮脚本的一部分:
Names Default To Here( 1 );
dt=Open("$SAMPLE_DATA/Big Class.jmp");
// Prompt for the input and create graph
rc = New Window("Choose the parameters to be plotted",
rb = Radio Box({"weight", "height"}),
Button Box("Ok",
Choose(rb<<GET></GET>
模式对话框将阻止对其他窗口的所有其他输入,而第二种方法将允许您同时继续在 JMP 中使用其他窗口。
希望有帮助!
回复:JSL-复选框选择变量然后在图形生成器中绘制简单又有效。棒极了!