互动情节有人对如何创建交互式报告有什么想法吗?
在报告中,我想包含每个图表中有多条线的图表。在窗口左侧,我想显示这些线的列表。当我单击列表中的一条线时,我希望图表中选定的线更加突出,而其余的线则淡出。
数据探索与可视化回复:互动情节在左侧添加图例可能有点棘手,但如果右侧没问题,那么基本的图形生成器就足够了

https://www.jmp.com/support/help/en/18.0/#page/jmp/graph-builder.shtml#
回复:互动情节您好!我使用 for 循环通过图形生成器创建了多个图形。现在,我想将所有这些图形分组到一张工作表上,并创建一个交互式界面,让用户可以同时与所有图形进行交互。有办法实现吗?谢谢!
回复:互动情节只使用基本图形生成器是一个好主意,我只是想在创建所有图形后将它们全部放在一起。
回复:互动情节我需要更多信息。例如,您可以将它们收集到 V 列表框中,然后使用新窗口显示
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb_collector = V List Box();
For(i = 1, i <= 3, i++,
gb_collector << Append(
dt << Graph Builder(
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
)
)
);
nw = New Window("",
gb_collector
);
如果您正在使用 For 循环,我假设您正在编写脚本。您是否阅读过脚本指南(例如https://www.jmp.com/support/help/en/18.0/#page/jmp/examples-of-creating-a-dashboard-from-two-reports.shtml# )。
回复:互动情节我想将标签页框方法与 for 循环结合起来,但是不起作用。
以下是我编写的脚本部分:
新窗口(“我的仪表板”,
H分线盒(
尺寸(1000,1000),
// 循环每个参数
对于(i = 1,i <= N 项(numPar),i ++,
// 所有批次、实际数据和差异的图表的列框
col1 = 列框(“”),
col2 = 列框(“”),
col3 = 列框(“”),
// 每个参数的标签页框
标签页框(
Title(numPar[i] || " 与时间点"),
// 创建所有批次的图
gb = 图形生成器(
尺寸(500,500),
变量(X(:时间点月份),Y(:结果),覆盖(:批次)),
元素(点(X,Y))
),
// 本地过滤器:将批次设置为仅与 ref 处于循环中的批次,而不是所有其他批次
gb << 本地数据过滤器(
无形的,
添加过滤器(列(:组件,:批次,:源表),
其中(:Component == numPar[i]),
其中(:Batch == {cyc,bat}),
其中(:源表 == dt_name)
)
),
dt << 清除选择(),
// 从图表中删除过滤器显示
gb << 显示控制面板(0),
// 报告改变情节
gbb = 报告(gb)[GraphBuilderBox(1)],
// 添加线性回归
gbb << 添加元素(1,1,{类型(“拟合线”),X,Y,拟合置信度(0),方程式(0)}),
// 设置 Y 轴
minval = min(:Result[dt << 获取行,其中(:Component == numPar[i] & :Batch == cyc & :Source Table == dt_name | :Batch == bat & :Component == numPar[i] & :Source Table == dt_name)]) * 0.95,
maxval = max(:Result[dt << 获取行,其中(:Component == numPar[i] & :Batch == cyc & :Source Table == dt_name | :Batch == bat & :Component == numPar[i] & :Source Table == dt_name)]) * 1.05,
maxvalts = max(:时间点月份[dt << 获取行,其中(:Component == numPar[i] & :Batch == cyc & :源表 == dt_name | :Batch == bat & :Component == numPar[i] & :源表 == dt_name)]) * 1.05,
gbb[AxisBox(1)]<<最小(-0.1),
gbb[AxisBox(1)]< gbb[AxisBox(2)]< gbb[AxisBox(2)]< gbb[AxisBox(2)] << inc((maxval - minval) / 10),
// 设置 Y 轴标签
unitList = 关联数组(:Result Unit[dt << 获取行,其中(:Component == numPar[i] & :Batch == cyc & :Source Table == dt_name | :Batch == bat & :Component == numPar[i] & :Source Table == dt_name)]) << 删除(“”)<< 获取键,
如果(N 项(unitList)== 1,
gbb[文本编辑框(4)] << 设置文本(numPar[i] || " [" || unitList[1] || "]")
,
gbb[文本编辑框(4)]<<设置文本(numPar[i])
),
// 设置图形标题
gbb[文本编辑框(1)]<<设置文本(numPar[i]||“与时间点”),
// 追加
gbba = 报告(gb),
col1 << 附加(gbba),
< )
)
),
< (英文):
回复:互动情节Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb_collector = Tab Box(<< Set Style("Horizontal Spread"));
For(i = 1, i <= 3, i++,
gb_collector << Add("Title",
dt << Graph Builder(
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
)
)
);
nw = New Window("",
gb_collector
);回复:互动情节你用的哪个 jmp 版本?它在你的 jmp 中有效吗?因为我使用上面的脚本没有得到预期的输出
回复:互动情节我不知道您预期的输出是什么,我也没有您的数据。脚本使用 Tab Box 收集 for 循环的结果

回复:互动情节当我运行上述脚本时,我得到了这个输出。它和你不一样
回复:互动情节他们似乎在 JMP18 中对其进行了更改。在 JMP17.2 中,这似乎有效
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb_collector = Tab Box(<< Set Style("Horizontal Spread"));
For(i = 1, i <= 3, i++,
tab = Tab Page Box("",
gb = dt << Graph Builder(
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
)
);
tab << Title("Title " || Char(i));
gb << title(Char(i));
gb_collector << Append(tab)
);
nw = New Window("",
gb_collector
);回复:互动情节我想解决的另一个问题是,当我有大量带有长标题的选项卡(例如 20 个)时,图表会变得不成比例地大,难以清晰地观察它们。我想将图表调整为较小的比例,同时保留较大的标题和选项卡。是否可以将图表放在左侧,右侧留有空白?
回复:互动情节我不确定你说的“左边有图形,右边有空白”是什么意思。手动创建图形,稍微调整一下大小,复制脚本,它会告诉你如何增加图形的大小。标签框还有溢出和其他选项,你可以在脚本索引中找到

回复:互动情节我想知道是否有办法像此屏幕截图中那样放置图表。例如,先放置第一个图表,然后再放置其他两个图表。
回复:互动情节例如,您可以通过多种不同的方式组合 V 列表框、H 列表框、标签框、标签页框等,以获得所需的布局。
您可以从脚本指南https://www.jmp.com/support/help/en/18.0/#page/jmp/construct-display-boxes-for-new-windows.shtml中找到很多信息
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb_expr = Expr(dt << Graph Builder(
Show Control Panel(0),
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
));
nw = New Window("",
V List Box(
gb_expr,
H List Box(
gb_expr,
gb_expr
)
)
);回复:互动情节名称默认为此处( 1 );
dt = 打开( “$SAMPLE_DATA/Big Class.jmp” ) ;
gb_collector = Tab Box( “仪表板” ) ;
对于(i = 1,i <= 20,i++,
// 所有批次的绘图的列框
col1 = Col Box("所有批次" || Char(i));
// 创建第一个 Graph Builder 图
gb = Expr(
dt << 图形生成器(
无形的,
变量(X(:体重),Y(:身高),覆盖(:性别)),
元素(点(X,Y,图例(9)),拟合线(X,Y,图例(11)))
)
(英文):
col1 << 附加(gb);
// 为两个 Graph Builder 图创建一个列框
col2 = Col Box( "实际数据 " || Char( i ) );
// 创建两个 Graph Builder 图并将其附加到 col2
对于(j = 1,j <= 2,j++,
gbb = Expr(
dt << 图形生成器(
无形的,
变量(X(:体重),Y(:身高),覆盖(:性别)),
元素(点(X,Y,图例(9)),拟合线(X,Y,图例(11)))
)
(英文):
col2 << 附加(gbb);
(英文):
// 为 col1 和 col2 创建一个标签并将其附加到 gb_collector
tab = Tab Page Box(“某某某”,
V 列表框(
col1,
H 列表框(col2)//将两个图并排放置
)
(英文):
gb_collector << 附加(标签);
// 为 gb 设置标题
gb << 标题( “dxfkgbdlk,xfhglihxfd” ) ;
(英文):
gb_collector << 可停靠( 1 );
gb_collector << 设置溢出启用( 1 );
nw = New Window(“仪表板”,
gb_collector
(英文):
尝试在我的脚本中使用上述示例。但我没有得到任何输出。这是我的脚本:
当前数据表(dt);
dt << 新列(“时间点月份”,公式(Round(:时间点天数/30.438),2));
gb_collector = 标签框();
对于(i = 1,i <= N 项(numPar),i ++,
// 所有批次的绘图的列框
col1 = 列框(“”);
// 实际数据绘图的列框
col2 = 列框(“”);
// 差异图的列框
col3 = 列框(“”);
//tab = 标签页框(“”,
gb = dt << 图形生成器(
//无形的,
尺寸(700,400),
变量(X(:时间点月份),Y(:结果),覆盖(:批次)),
元素(点(X,Y))
(英文):
// 本地过滤器:将批次设置为仅与 ref 处于循环中的批次,而不是所有其他批次
gb << 本地数据过滤器(
无形的,
添加过滤器(列(:组件,:批次,:源表),
其中(:Component == numPar[i]),
其中(:Batch == {cyc,bat}),
其中(:源表 == dt_name)
)
(英文):
dt << 清除选择();
// 从图表中删除过滤器显示
gb << 显示控制面板(0);
// 报告改变情节
gbb = 报告(gb)[GraphBuilderBox(1)];
// 添加线性回归
gbb << 添加元素(1,1,{类型(“拟合线”),X,Y,拟合置信度(0),方程式(0)});
// 设置 Y 轴
minval = min(:Result[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc & :Source Table == dt_name | :Batch == bat & :Component == numPar[i] & :Source Table == dt_name)]) * 0.95;
maxval = max(:Result[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc & :Source Table == dt_name | :Batch == bat & :Component == numPar[i] & :Source Table == dt_name)]) * 1.05;
maxvalts = max(:时间点月份[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc & :源表 == dt_name | :Batch == bat & :Component == numPar[i] & :源表 == dt_name)]) * 1.05;
gbb[AxisBox(1)]<<最小(-0.1);
gbb[AxisBox(1)]<
gbb[AxisBox(2)]<
gbb[AxisBox(2)]<
gbb[AxisBox(2)] << inc((maxval - minval) / 10);
// 设置 Y 轴标签
unitList = 关联数组(:Result Unit[dt << 获取行,其中(:Component == numPar[i] & :Batch == cyc & :Source Table == dt_name | :Batch == bat & :Component == numPar[i] & :Source Table == dt_name)])<< 删除(“”)<< 获取键;
如果(N 项(unitList)== 1,
gbb[文本编辑框(4)] << 设置文本(numPar[i] || " [" || unitList[1] || "]")
,
gbb[文本编辑框(4)]<<设置文本(numPar[i])
(英文):
// 设置图形标题
gbb[文本编辑框(1)] << 设置文本(numPar[i] || " vs. 时间点");
// 追加
//gbba = 报告(gb),
col1<<附加(gb);
//过滤器<<关闭;
gb<<关闭窗口;
// 在循环参数中我们现在也循环遍历批次
对于(k = 1,k <= N 个项目(cyc),k ++,
check = dt << 获取行,其中(:Component == numPar[i] & :Batch == cyc[k] & :Source Table == dt_name | :Batch == bat[k] & :Component == numPar[i] & :Source Table == dt_name);
if(N items(check) > 0, // 创建检查以查看当前批次是否存在参数
// 创建基础图
gb = 图形生成器(
//无形的,
尺寸(700,400),
变量(X(:时间点月份),Y(:结果),覆盖(:批次)),
元素(点(X,Y),)
(英文):
gb << 本地数据过滤器(invisible,添加过滤器(列(:组件,:批次,:源表),其中(:组件 == numPar[i]),其中(:批次 == {cyc[k], bat[k]}),其中(:源表 == dt_name)));
dt << 清除选择();
// 从图表中删除过滤器显示
gb << 显示控制面板( 0 );
// 报告改变情节
gbb = 报告(gb)[GraphBuilderBox(1)];
// 添加线性回归
gbb << 添加元素(1,1,{类型(“拟合线”),X,Y,拟合置信度(0),方程(0)});
// 设置 Y 轴
minval = min(:Result[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc[k] & :Source Table == dt_name | :Batch == bat[k] & :Component == numPar[i] & :Source Table == dt_name)])*0.95;
maxval = max(:Result[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc[k] & :Source Table == dt_name| :Batch == bat[k] & :Component == numPar[i] & :Source Table == dt_name)])*1.05;
maxvalts = max(:时间点月份[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc[k] & :源表 == dt_name| :Batch == bat[k] & :Component == numPar[i] & :源表 == dt_name)])*1.05;
gbb[AxisBox(1)]<<最小(-0.1);
gbb[AxisBox(1)]<
gbb[AxisBox(2)]<
gbb[AxisBox(2)]<
gbb[AxisBox(2)]<
// 设置 Y 轴标签
unitList = 关联数组(:Result Unit[dt << 获取行,其中(:Component == numPar[i] & :Batch == cyc[k] & :Source Table == dt_name | :Batch == bat[k] & :Component == numPar[i] & :Source Table == dt_name)] ) << 删除("" )<< 获取键;
如果(N 项(unitList)==1,
gbb[文本编辑框( 4 )] << 设置文本( numPar[i] || " [" || unitList[1] || "]" )
(英文):
如果(N 项(unitList)!= 1,
gbb[文本编辑框( 4 )] << 设置文本( numPar[i] )
(英文):
// 设置图表标题
gbb[文本编辑框( 1 )] << 设置文本( numPar[i] || " vs. 时间点 ");
// 追加
//gbba = 报告( gbb );
col2 << 附加(gbb);
//过滤器<<关闭;
gb<<关闭窗口;
// 开始第二个绘图
gb2 = 图形生成器(
//无形的,
尺寸(700,400),
变量(X(时间点月份),Y(:差异),颜色(:批次)),
元素(点(X,Y))
(英文):
gb2 << 本地数据过滤器(invisible,添加过滤器(列(:组件,:批次,:源表),其中(:组件 == numPar[i]),其中(:批次 == cyc[k]),其中(:源表 == dt5_name)));
dt4 << 清除选择();
// 从图表中删除过滤器显示
gb2 << 显示控制面板( 0 );
// 报告改变情节
gbb2 = 报告(gb2)[GraphBuilderBox(1)];
gbb2 << 添加元素(1,1,{类型(“线”),X,Y});
// 获取 HC 值
l_idx = dt4 << 获取行,其中(dt4:Component == numPar[i] & :Batch == cyc[k]);
ul = 最小值(dt4:HC[l_idx]);
如果(缺少(ul),
如果(最小值(:差异[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc[k] & :源表 == dt5_name)]) == 0,
最小值=-5;
最大值 = 5,
minval = min(:Difference[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc[k] & :Source Table == dt5_name)])*0.95;
maxval = max(:Difference[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc[k] & :Source Table == dt5_name)])*1.05;
),
minval = min(:Difference[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc[k] & :Source Table == dt5_name)],-ul)*1.05;
maxval = max(:Difference[dt << 获取行,其中(:Component == numPar[i] & :Batch == cyc[k] & :Source Table == dt5_name)], ul)*1.05;
(英文):
if(!ismissing(ul), //如果没有 HC 值,则不创建限制线
gbb2[AxisBox(2)] << 添加参考线(ul,"solid", black, char(round(ul,2)));
gbb2[AxisBox(2)] << 添加参考线(-ul,"solid", black, char(round(-ul,2)));
(英文):
gbb2[AxisBox(2)]<<添加参考线(0,"虚线");
gbb2[AxisBox(2)]<
gbb2[AxisBox(2)]<
gbb2[AxisBox(2)]<
//附加
//gbba2 = 报告(gbb2);
col3 << 附加(gbba2);
//过滤器<<关闭;
gb2<<关闭窗口;
(英文):
(英文):
//);
tab = 标签页框(numPar[i],
V 列表框(
第 1 列
H 列表框(col2,col3)//将两个图并排放置
)
(英文):
标签<<标题(numPar[i]);
//gb << 标题(Char(1));
gb_collector << 附加(标签);
(英文):
gb_collector << 可停靠( 1 );
gb_collector << 设置溢出启用( 1 );
nw = New Window("我的仪表板",
gb_collector
(英文):
你能帮我看看该怎么做吗?
回复:互动情节您必须退一步并解释您想要什么:在最佳情况下提供示例数据或使用 JMP 样本数据集之一来解释您希望在最小可能的示例中得到什么。
回复:互动情节Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb_collector = Tab Box("Dashboard");
For(i = 1, i <= 20, i++,
// Column box for plot of all batches
col1 = Col Box("All Batches" || Char(i));
// Create the first Graph Builder plot
gb = Expr(
dt << Graph Builder(
invisible,
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
)
);
col1 << Append(gb);
// Create a column box for the two Graph Builder plots
col2 = Col Box("Actual Data " || Char(i));
// Create and append two Graph Builder plots to col2
For(j = 1, j <= 2, j++,
gbb = Expr(
dt << Graph Builder(
invisible,
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
)
);
col2 << Append(gbb);
);
// Create a tab for col1 and col2 and append it to gb_collector
tab = Tab Page Box(
" Something Something ",
V List Box(
col1,
H List Box(col2) // Placing the two plots next to each other
)
);
gb_collector << Append(tab);
// Set title for gb
gb << title("Title");
);
gb_collector << Dockable(1);
gb_collector << Set Overflow Enabled(1);
nw = New Window("Dashboard", gb_collector);
Here is the example that i use and i am trying to follow the same structure in my own script.回复:互动情节当前数据表(dt);
dt << 新列(“时间点月份”,公式(Round(:时间点天数/30.438),2));
gb_collector = 标签框();
对于(i = 1,i <= N 项(numPar),i ++,
// 所有批次的绘图的列框
col1 = 列框(“”);
// 实际数据绘图的列框
col2 = 列框(“”);
// 差异图的列框
col3 = 列框(“”);
//tab = 标签页框(“”,
gb = dt << 图形生成器(
//无形的,
尺寸(700,400),
变量(X(:时间点月份),Y(:结果),覆盖(:批次)),
元素(点(X,Y))
(英文):
// 本地过滤器:将批次设置为仅与 ref 处于循环中的批次,而不是所有其他批次
gb << 本地数据过滤器(
无形的,
添加过滤器(列(:组件,:批次,:源表),
其中(:Component == numPar[i]),
其中(:Batch == {cyc,bat}),
其中(:源表 == dt_name)
)
(英文):
dt << 清除选择();
// 从图表中删除过滤器显示
gb << 显示控制面板(0);
// 报告改变情节
gbb = 报告(gb)[GraphBuilderBox(1)];
// 添加线性回归
gbb << 添加元素(1,1,{类型(“拟合线”),X,Y,拟合置信度(0),方程式(0)});
// 设置 Y 轴
minval = min(:Result[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc & :Source Table == dt_name | :Batch == bat & :Component == numPar[i] & :Source Table == dt_name)]) * 0.95;
maxval = max(:Result[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc & :Source Table == dt_name | :Batch == bat & :Component == numPar[i] & :Source Table == dt_name)]) * 1.05;
maxvalts = max(:时间点月份[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc & :源表 == dt_name | :Batch == bat & :Component == numPar[i] & :源表 == dt_name)]) * 1.05;
gbb[AxisBox(1)]<<最小(-0.1);
gbb[AxisBox(1)]<
gbb[AxisBox(2)]<
gbb[AxisBox(2)]<
gbb[AxisBox(2)] << inc((maxval - minval) / 10);
// 设置 Y 轴标签
unitList = 关联数组(:Result Unit[dt << 获取行,其中(:Component == numPar[i] & :Batch == cyc & :Source Table == dt_name | :Batch == bat & :Component == numPar[i] & :Source Table == dt_name)])<< 删除(“”)<< 获取键;
如果(N 项(unitList)== 1,
gbb[文本编辑框(4)] << 设置文本(numPar[i] || " [" || unitList[1] || "]")
,
gbb[文本编辑框(4)]<<设置文本(numPar[i])
(英文):
// 设置图形标题
gbb[文本编辑框(1)] << 设置文本(numPar[i] || " vs. 时间点");
// 追加
//gbba = 报告(gb),
col1<<附加(gb);
//过滤器<<关闭;
gb<<关闭窗口;
// 在循环参数中我们现在也循环遍历批次
对于(k = 1,k <= N 个项目(cyc),k ++,
check = dt << 获取行,其中(:Component == numPar[i] & :Batch == cyc[k] & :Source Table == dt_name | :Batch == bat[k] & :Component == numPar[i] & :Source Table == dt_name);
if(N items(check) > 0, // 创建检查以查看当前批次是否存在参数
// 创建基础图
gb = 图形生成器(
//无形的,
尺寸(700,400),
变量(X(:时间点月份),Y(:结果),覆盖(:批次)),
元素(点(X,Y),)
(英文):
gb << 本地数据过滤器(invisible,添加过滤器(列(:组件,:批次,:源表),其中(:组件 == numPar[i]),其中(:批次 == {cyc[k], bat[k]}),其中(:源表 == dt_name)));
dt << 清除选择();
// 从图表中删除过滤器显示
gb << 显示控制面板( 0 );
// 报告改变情节
gbb = 报告(gb)[GraphBuilderBox(1)];
// 添加线性回归
gbb << 添加元素(1,1,{类型(“拟合线”),X,Y,拟合置信度(0),方程(0)});
// 设置 Y 轴
minval = min(:Result[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc[k] & :Source Table == dt_name | :Batch == bat[k] & :Component == numPar[i] & :Source Table == dt_name)])*0.95;
maxval = max(:Result[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc[k] & :Source Table == dt_name| :Batch == bat[k] & :Component == numPar[i] & :Source Table == dt_name)])*1.05;
maxvalts = max(:时间点月份[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc[k] & :源表 == dt_name| :Batch == bat[k] & :Component == numPar[i] & :源表 == dt_name)])*1.05;
gbb[AxisBox(1)]<<最小(-0.1);
gbb[AxisBox(1)]<
gbb[AxisBox(2)]<
gbb[AxisBox(2)]<
gbb[AxisBox(2)]<
// 设置 Y 轴标签
unitList = 关联数组(:Result Unit[dt << 获取行,其中(:Component == numPar[i] & :Batch == cyc[k] & :Source Table == dt_name | :Batch == bat[k] & :Component == numPar[i] & :Source Table == dt_name)] ) << 删除("" )<< 获取键;
如果(N 项(unitList)==1,
gbb[文本编辑框( 4 )] << 设置文本( numPar[i] || " [" || unitList[1] || "]" )
(英文):
如果(N 项(unitList)!= 1,
gbb[文本编辑框( 4 )] << 设置文本( numPar[i] )
(英文):
// 设置图表标题
gbb[文本编辑框( 1 )] << 设置文本( numPar[i] || " vs. 时间点 ");
// 追加
//gbba = 报告( gbb );
col2 << 附加(gbb);
//过滤器<<关闭;
gb<<关闭窗口;
// 开始第二个绘图
gb2 = 图形生成器(
//无形的,
尺寸(700,400),
变量(X(时间点月份),Y(:差异),颜色(:批次)),
元素(点(X,Y))
(英文):
gb2 << 本地数据过滤器(invisible,添加过滤器(列(:组件,:批次,:源表),其中(:组件 == numPar[i]),其中(:批次 == cyc[k]),其中(:源表 == dt5_name)));
dt4 << 清除选择();
// 从图表中删除过滤器显示
gb2 << 显示控制面板( 0 );
// 报告改变情节
gbb2 = 报告(gb2)[GraphBuilderBox(1)];
gbb2 << 添加元素(1,1,{类型(“线”),X,Y});
// 获取 HC 值
l_idx = dt4 << 获取行,其中(dt4:Component == numPar[i] & :Batch == cyc[k]);
ul = 最小值(dt4:HC[l_idx]);
如果(缺少(ul),
如果(最小值(:差异[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc[k] & :源表 == dt5_name)]) == 0,
最小值=-5;
最大值 = 5,
minval = min(:Difference[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc[k] & :Source Table == dt5_name)])*0.95;
maxval = max(:Difference[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc[k] & :Source Table == dt5_name)])*1.05;
),
minval = min(:Difference[dt << 获取行其中(:Component == numPar[i] & :Batch == cyc[k] & :Source Table == dt5_name)],-ul)*1.05;
maxval = max(:Difference[dt << 获取行,其中(:Component == numPar[i] & :Batch == cyc[k] & :Source Table == dt5_name)], ul)*1.05;
(英文):
if(!ismissing(ul), //如果没有 HC 值,则不创建限制线
gbb2[AxisBox(2)] << 添加参考线(ul,"solid", black, char(round(ul,2)));
gbb2[AxisBox(2)] << 添加参考线(-ul,"solid", black, char(round(-ul,2)));
(英文):
gbb2[AxisBox(2)]<<添加参考线(0,"虚线");
gbb2[AxisBox(2)]<
gbb2[AxisBox(2)]<
gbb2[AxisBox(2)]<
//附加
//gbba2 = 报告(gbb2);
col3 << 附加(gbba2);
//过滤器<<关闭;
gb2<<关闭窗口;
(英文):
(英文):
//);
tab = 标签页框(numPar[i],
V 列表框(
第 1 列
H 列表框(col2,col3)//将两个图并排放置
)
(英文):
标签<<标题(numPar[i]);
//gb << 标题(Char(1));
gb_collector << 附加(标签);
(英文):
gb_collector << 可停靠( 1 );
gb_collector << 设置溢出启用( 1 );
nw = New Window("我的仪表板",
gb_collector
(英文):
这是我的脚本..
附件是我当前仪表板的屏幕截图,其中包含 8 个图表。以下是我组织这些图表的具体要求:
- 保留第一张图表:我想保留第一张图表的原样。
- 删除第二张图表:应从仪表板中删除第二张图表。
- 将最后六张图表配对:最后六张图表应配对,以便每对并排显示。具体而言,图表应按以下方式组织:
- 第三和第四个图表应彼此相邻显示。
- 第五和第六个图表应彼此相邻显示。
- 第七和第八个图表应彼此相邻显示。
总而言之,最终的布局应该是第一个图表,后面跟着三对图表,每对图表并排显示。
回复:互动情节这两个脚本完全不同(另外,请使用 JSL 格式来编写 JSL 代码,这样更容易阅读)。您使用 Col Box 做什么?您循环什么(i 和 j)?什么决定了每个图表包含什么信息?它们应该相互交互吗?