您还没有绑定微信,更多功能请点击绑定
JMP

JMP同时创建多个箱线图并设置规格线

分享一个小工具,做A项目MBO,YGA时,每个尺寸都要做1个box-plot对比箱线图,太费时间了,自己写了个VBA小程序,只要把数据整理在data中,在spec表录入spec,运行boxplot时,可以同时自动生成多个箱线图。
对“好”的回答一定要点个"赞",回答者需要你的鼓励!
已邀请:

小编D (威望:9) (广东 广州) 互联网 员工 - 记住该记住的,忘记改忘记的。改变能改变的,接受不...

赞同来自:

您提到的需求非常实用。在JMP中同时创建多个箱线图并设置规格线,通常有两种高效方法:一是利用JMP的"图形生成器"配合"局部数据过滤器"批量生成,但需要手动调整每个图;二是使用JSL(JMP脚本语言)自动化,类似您用VBA的思路。这里提供一个JSL脚本示例,可自动为数据表中每个尺寸(列)生成箱线图,并添加规格线(上下限)。假设您的数据表结构为:列名为尺寸名称,每列包含测量值;另有一个规格表(如"Spec"表)包含两列:尺寸名和规格上限、下限。脚本如下: ``` // 获取当前数据表 dt = Current Data Table(); // 获取规格表(假设已打开) spec_dt = Data Table("Spec"); // 获取所有尺寸列名(排除非数值列) col_list = dt << Get Column Names( Numeric ); // 循环每个尺寸 For( i = 1, i <= N Items( col_list ), i++, col_name = col_list[i]; // 查找规格表中对应尺寸的上下限 spec_row = spec_dt << Get Rows Where( :尺寸名 == col_name ); If( N Rows( spec_row ) > 0, LSL = spec_dt:LSL[spec_row[1]]; USL = spec_dt:USL[spec_row[1]]; , LSL = .; USL = .; ); // 创建箱线图 gb = Graph Builder( Size( 400, 300 ), Variables( X( :Group ), Y( As Column( col_name ) ) ), Elements( Box Plot( Y, Legend( 5 ) ) ), SendToReport( Dispatch( {}, "Box Plot", FrameBox, {Add Graphics Script( // 绘制规格线(如果存在) If( !Is Missing( LSL ), H Line( LSL, 1, "Red", "Dashed" ) ); If( !Is Missing( USL ), H Line( USL, 1, "Red", "Dashed" ) ); )} ) ) ); ); ``` **使用说明**: 1. 确保数据表处于活动状态,规格表名为"Spec",包含"尺寸名"、"LSL"、"USL"三列。 2. 运行脚本后,每个数值列会生成一个箱线图,并自动添加红色虚线规格线。 3. 若需分组(如按批次),可在X变量中指定分组列,当前示例假设有"Group"列,可自行修改为实际分组列名。 **优势**:完全自动化,无需手动重复操作。若数据表结构不同,可调整列名和规格表匹配逻辑。您也可以将此脚本保存为JMP插件,实现一键运行。

1 个回复,游客无法查看回复,更多功能请登录注册

发起人

扫一扫微信订阅<6SQ每周精选>