大家好,
我想编写一个小仪表板/应用程序,您可以使用滑块(允许连续级别)更改三个变量 A、B、C,并使用单选按钮更改第四个变量 Faktor(因为只允许 4 个级别)。

然后,我的数据表 G1、G2、G3 的列乘以 A、B、C 以及 Faktor,并使用图形生成器与所有三个新列的总和一起绘制。
Clear Log();
Delete Symbols();
Names Default To Here( 1 );
// default parameter values.
A = 1;
B = 2;
C = 3;
Faktor = 2;
dt = Current Data Table();
dt << New Column( "G1scale", Numeric, Continuous, Formula( (:G1 * Here( 1 ):A) * Here( 1 ):Faktor ) );
dt << New Column( "G2scale", Numeric, Continuous, Formula( (:G2 * Here( 1 ):B) * Here( 1 ):Faktor ) );
dt << New Column( "G3scale", Numeric, Continuous, Formula( (:G1 * Here( 1 ):C) * Here( 1 ):Faktor ) );
dt << New Column( "SumColumn", Numeric, Continuous, Formula( :G1scale + :G2scale + :G3scale ) );
到目前为止,我的脚本工作正常,拖动滑块会更新数据表中的公式列,但我在使用单选按钮执行相同操作时遇到困难。
update = Expr(
Here( 1 ):A = p;
Here( 1 ):B = r;
Here( 1 ):C = t;
Here( 1 ):Faktor = Choose( nw1["cat"], 1, 2, 3, 4 );
dt << rerun formulas;
Wait( 0 );
);
nw1 = New Window( "Faktor",
Outline Box( "Select Faktor", cat = Radio Box( {"1", "2", "3", "4"} ),update )
);
nw2=New Window( "Sliding",
Outline Box( "A",
Slider Box(
1,
10,
p,
update
)
),
Outline Box( "B",
Slider Box(
1,
10,
r,
update
)
),
Outline Box( "C",
Slider Box(
1,
10,
t,
update
)
)
);
g1=Graph Builder(
Size( 529, 456 ),
Show Control Panel( 0 ),
Variables(
X( :WL ),
Y( :G1scale ),
Y( :G2scale, Position( 1 ) ),
Y( :G3scale, Position( 1 ) ),
Y( :SumColumn, Position( 1 ) )
),
Elements( Points( X, Y( 1 ), Y( 2 ), Y( 3 ), Y( 4 ), Legend( 3 ) ) ),
SendToReport(
Dispatch( {}, "graph title", TextEditBox, {Set Text( "Simulated Plot" )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "Mygauss" )} )
)
);当我选择单选按钮时,我无法更新数据表(因此也无法更新图表)。
第二个问题是我想将三个当前窗口合并为一个窗口(仪表板或应用程序)。 我可以选择它们全部用于组合窗口,但是当尝试将它们发送到仪表板构建器时,仅出现图形构建器窗口,而不出现滑块。 如何将我的滑块/单选按钮拖到仪表板/应用程序生成器中?
@费利,
除了一个简单的例子之外,我没有使用过 DashboardBuilder。 我使用应用程序生成器或仅编写脚本来创建应用程序。您可能想阅读相关内容。 有些人真的很喜欢。 其他已经编写了一段时间脚本的人通常通过 JSL 处理事情。
下面是为您的任务启动 ApplicationBuilder 的屏幕截图。
我认为阅读第11章是一个好的开始,
@gzmorgan0
非常感谢!
你成功地达到了我想要的解决方案。
在我的许多早期尝试之一中,我正在尝试使用表变量 - 我让滑块工作,但不让单选按钮工作。
我缺少的关键是:
dt << Set Table Variable("Faktor", Expr(num (cat << Get Selected) ) );我的 Faktor 表变量始终是一个字符串,这弄乱了公式,所以我必须寻找其他方法。
我尝试使用 Dashboard Builder/Application Builder 构建我的图表,因为许多人在开始 JSL/应用程序构建时都推荐这样做,但我将实现您的提示并进一步深入研究容器等。
再次非常感谢您的帮助!
@费利,
该脚本中有几项会导致问题。
第一个是与猫有关的RadioBox。 脚本附加到大纲框,而不是单选框
//Outline Box( "Select Faktor", cat = Radio Box( {"1", "2", "3", "4"} ),update ) //wrong, see below
Outline Box( "Select Faktor", cat = Radio Box( {"1", "2", "3", "4"} , update ) )
名称默认为此处(1);声明变量值仅适用于该脚本。您不需要寻址 Here 命名空间,语法为 Here:A 。 但这又带来了另一个问题,公式列 G1scale、G2scale 等将具有类似 :G1*A 的公式。脚本运行后,或者如果您稍后尝试打开表,则变量 A 是未知的。一些建议是:
- 使用 dt << Set Table Variable(A, 1) 创建表变量 A, B, C, Faktor
- 然后公式变为 :G1*:A 并且当脚本未运行时表将识别该值,
- 如果多次运行脚本,它将创建多个 G1scale、G1scale 2 等。通过检查 或 列是否存在,可以更优雅地完成此操作,如果存在,请将其删除或仅分配函数。 此外,一旦窗口关闭,您可以使用 nw 的 On Close 函数删除这些列。
然而,最大的建议是,如果您要深入研究交互式脚本,您应该学习如何使用以下命令创建 JMP 报告:
容器:列表框,列表框,阵容盒,面板盒。您的脚本使用大纲框容器。
控制:按钮盒,滑块盒,复选框, ETC。
输入:组合框,列表框,列列表框, ETC。
不要依赖于组合窗口。
《JMP 脚本编写指南》中的第 11 章是一个很好的起点。 主菜单 > 帮助 >JMP 文档 > JMP 脚本编写指南 >> 第 11 章
附件是使用此布局的脚本(树结构)

