大家好,
我想编写一个小仪表板/应用程序,您可以在其中使用滑块更改三个变量 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" )} )
)
);当我选择单选按钮时,我无法更新数据表(因此也无法更新图表)。
第二个问题是我想将三个当前窗口合并为一个窗口(仪表板或应用程序)。 我可以为组合 Windows 选择它们,但是当尝试将它们发送到仪表板生成器时,只出现图形生成器窗口,而不是 silders。 如何将我的 silder/单选按钮拖到仪表板/应用程序构建器中?
@Feli ,
除了一个简单的例子,我没有使用过 DashboardBuilder。 我使用 Application Builder 或只是编写脚本来创建应用程序。你可能想读一读。 有些人真的很喜欢。 其他已经编写了一段时间脚本的人,通常通过 JSL 处理事情。
下面是为您的任务启动 ApplicationBuilder 的屏幕截图。
我认为阅读第 11 章是一个好的开始,
@gzmorgan0
非常感谢!
您成功地达到了我想要的解决方案。
在我之前的许多尝试中,我正在玩弄表格变量——我让滑块工作,但不是单选按钮。
我缺少的关键是:
dt << Set Table Variable("Faktor", Expr(num (cat << Get Selected) ) );我的 Faktor 表变量总是一个字符串,这弄乱了公式,所以我不得不寻找其他方法。
我正在尝试使用 Dashboard Builder/Application Builder 构建我的图表,因为在开始 JSL/应用程序构建时很多人都建议这样做,但我将实施您的提示并进一步深入研究容器等。
再次感谢您的帮助!
@Feli ,
此脚本中有几个项目会导致问题。
第一个是猫,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
- 那么formua变成:G1*:A,当脚本没有运行时,表格会识别出这个值,
- 如果您多次运行脚本,它将创建多个 G1scale、G1scale 2 等。这可以通过检查 or 列是否存在来更优雅地完成,如果存在,删除它或只分配函数。 此外,一旦窗口关闭,您可以使用 nw 的 On Close 函数删除这些列。
但是,最大的建议是,如果您要深入研究交互式脚本,您应该学习如何创建 JMP 报告
容器:列表框,列表框,阵容盒,面板盒.您的脚本使用大纲框容器。
控制:按钮框,滑块框,复选框, ETC。
输入:组合框,列表框,列列表框, ETC。
不要依赖组合窗口。
JMP 脚本指南中的第 11 章是一个很好的起点。 MainMenu > 帮助 >JMP 文档 > JMP 脚本指南 >> 第 11 章
附件是使用此布局的脚本(树结构)

