你好,
我想从数据表中编写一个堆积条形图,但我不知道该数据表的列是什么。
1. 已创建包含所需列的数据表
2. 添加数据过滤器以选择所需的行并排除剩余的
2. 应根据第一列之后的每一列的可用行创建堆积条形图。
3. 除了第一列之外,不知道列名称和确切计数。
我为一组数据创建了一个堆积条形图,如下所示。
我已经从图形生成器复制了脚本,这就是它的外观。
Graph Builder(
Size( 500, 590 ),
Variables(
X( :BIBID ),
Y( :Name( "Row %(Fail, Column2)" ) ),
Y( :Name( "Row %(Fail, Column3)" ), Position( 1 ) ),
Y( :Name( "Row %(Fail, Column4)" ), Position( 1 ) ),
Y( :Name( "Row %(Fail, Column5)" ), Position( 1 ) ),
Y( :Name( "Row %(Fail, Column6)" ), Position( 1 ) ),
Y( :Name( "Row %(Fail, Column7)" ), Position( 1 ) ),
Y( :Name( "Row %(Fail, Column8)" ), Position( 1 ) )
),
Elements(
Bar(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Legend( 4 ),
Bar Style( "Stacked" )
)
)
);
我的问题是如何通过 JSL 参数化 Graph Builder 下的变量 (Y) 和元素 (Y)?
Pass Fail BinPass Fail Bin通过 失败箱
”我总是感到惊讶,包含注释和空行的 52 行 JSL 可以做这么多事情。 ” - 绝对地!
@mt7575 ,在写剧本的时候有很多问题需要解答;例如,这是交互式显示还是创建图形并将其另存为 png ?到日记?到 PPTX? 您没有提及您正在使用哪个版本的 JMP、您拥有哪个操作系统(MAC 和 Windows 语法存在一些差异),也没有提及您的 JSL 技能水平。 在教授或撰写有关 JSL 或任何脚本语言的文章时,有效的最佳方法是“了解您的工具”,这换句话说,您需要具备一些基本技能来编写甚至维护其他人为您编写的脚本。
附件是为交互式显示编写的脚本,用于选择要绘制 X 中的项目和 Y 中的项目。它使用以下 JSL“工具”。 对于列出的每个未编写脚本的项目,您应该花时间在“帮助”>“脚本索引”中探索脚本、选项和消息。
- 展示盒:FilterColSelector、ButtonBox、HListBox、VListBox、PanelBox、GraphBuilderBox
- 对象:GraphBuilder、DataFilter、表达式、数据表
如果不知道您的 JSL 技能,则使用带有附加表达式的 Go 按钮来代替动态“OnChange”函数。
我花了一点时间写这个脚本,因为显示框 GraphBuilderBox 文档缺失JSL 伴侣,第二版。 ;该脚本将用作本书附录的示例。 所以我确实知道,有时很难识别所有可能可用的工具。 使用该脚本和示例数据表。 该脚本仅取决于数据表的第一列始终为 X 的事实。 请注意,从显示中,选中“反向”以将数据过滤器用作“不使用”选项。
该脚本已在 Windows 操作系统上的 JMP PRO 12、13 和 14 上进行了测试。我总是感到惊讶,包含注释和空行的 52 行 JSL 可以做这么多事情。

嗨 ian_jmp,
谢谢回复。 我附加了图形生成器用于绘制堆积条形图的示例数据。

Table.jpg 是显示示例数据的屏幕截图
JMP:
1. 我已应用数据过滤器来选择列名称包含 Fail 且具有非零值的行
2. 我已使用图形生成器绘制了选定的行,其中 X 值是 BIB_ID,Y 值是所有失败列
杰士林:
我想参数化上述步骤
1. 每次只会有BIB_ID列
2. 下一列名称或编号。列数每次都会改变
目标:
1. 必须为 Table.jpg 中提到的数据类型编写 JSL,以获得上一篇文章中所附的堆叠条形图。
如果您正在寻找工作代码,因为每种情况都可能略有不同。一些示例数据将帮助人们让您走上正确的道路。
要理解一般方法,我认为您需要将任务分解为两个步骤,即获取列,然后使用图形生成器。 对于第一个,您可能需要一个“ColListBox()”(数据过滤器适用于行而不是列)。 在“帮助 > 脚本索引”中查找此内容。 对于第二步,由于 Graph Builder 功能非常强大,有很多选项,因此必要的 JSL 可能需要稍微小心。