如何使用列作为二元表的参考线? 我有一个数据表,有 4 列,分别为控制上限、警告上限、警告下限和控制下限。 数据表还有一个包含许多变量的列。 每个变量都有一个特定的限制值。 我正在尝试按变量绘制值与时间的关系,但希望在 y 轴上添加特定变量图表的限制。
我附上了大类 jmp 文件作为示例,但添加了组成的 UCL、CL 和 LCL。 我想要的是按性别(变量)绘制体重(我的值)与身高(时间)的图表。 但希望 UCL、CL 和 LCL 列在其适当的变量图表的 y 轴上显示为限制。 希望这有点清楚? 任何帮助将不胜感激。
嗨,我在叠加图上使用了它,它的效果就像一个魅力。
我现在想在单向图中使用它,但似乎不起作用。还有其他方法可以在单向图上使用它吗?
快速提问。 如果我有多个具有不同类型限制的 By 组,而不仅仅是 (:sex),该怎么办?
Summarize( dt, byVals = by( :sex, :age ) );
UCL = :UAL[(dt << get rows where( :sex, :age == byVals[i] ))[1]];
现实情况是,UWL 和 LWL 图表都失败了。您只是在 UWL 图表中看不到问题。看起来,当您指定向图表添加参考线时,如果图表的值是缺失值“.”,则代码将从该点开始对图表停止工作。对于 UWL 图表,它已经列出了您想要显示的所有参考线,然后代码在遇到 LWL 参考线缺失值时停止工作。但是,在 LWL 图表中,会在 LWL 参考线之前尝试使用 UWL 参考线,并且当代码发现 UWL 参考线缺失值时,代码将停止工作。有几种不同的方法可以解决这个问题,下面是解决这个问题的一种方法
Names Default To Here( 1 );
dt = Current Data Table();
// Get all of the by values, since separate code will have to be added for each
Summarize( dt, byVals = by( :sex ) );
// Generate the Plot code
op = Overlay Plot(
X( :height ),
Y( :weight ),
by( :sex ),
SendToReport(
Dispatch(
{},
"101",
ScaleBox,
{Label Row( Label Orientation( "Vertical" ) )}
)
)
);
For( i = 1, i <= N Items( byVals ), i++,
// Get the LCL and UCL values for this by group. UWL is only for F and LWL is for M
UCL = :UAL[(dt << get rows where( :sex == byVals[i] ))[1]];
LCL = :LAL[(dt << get rows where( :sex == byVals[i] ))[1]];
UWL = :UWarnL[(dt << get rows where( :sex == byVals[i] ))[1]];
LWL = :LWarnL[(dt << get rows where( :sex == byVals[i] ))[1]];
show(byvals[i],ucl,lcl,uwl,lwl);
// Make sure the UCL and LCL values are displayed
chartMin = Min( :weight[dt << get rows where( :sex == byVals[i])]);
chartMax = Max( :weight[dt << get rows where( :sex == byVals[i])]);
If(LCL < chartMin, chartMin = LCL );
If(UCL > chartMax, chartMax = UCL );
chartRange5% = (chartMax - ChartMin)/20;
chartMin = chartMin - chartRange5%;
chartMax = chartMax + chartRange5%;
// Generate the code to produce the LCL and UCL reference lines
Eval(
Substitute(
Expr(
op << SendToByGroup(
{:sex == __byVals__},
Y Axis[1] << {{Min( __min__ ), Max( __max__ ),
Add Ref Line( __UCL__, "Solid", "Medium Dark Red", "UAL", 1 ),
Add Ref Line( __LCL__, "Solid", "Medium Dark Red", "LAL", 1 ),
Add Ref Line( __WLVal__, "dotted", "Medium Dark Red", __WL__, 1 )
}}
)
),
Expr( __byVals__ ), byVals[i],
Expr( __UCL__ ), UCL,
Expr( __LCL__ ), LCL,
Expr( __WLVal__ ), If(isMissing(UWL)==0,UWL,LWL),
Expr( __WL__ ), If(isMissing(UWL)==0,"UWL","LWL"),
Expr( __min__ ), chartMin,
Expr( __max__ ), chartMax
)
);
);我继续根据我的需要修改了你的脚本。 它确实可以满足我的需要;但是现在我添加了额外的参考线,我遇到了问题。 附件是一个一般示例。 附加了具有附加列的 Bigclass 和我修改的脚本。 我试图添加警告上限,但该值仅适用于性别 F。 对于 M 组,有一个警告下限。 当我运行脚本时,UWL 将出现在 F 组的第一个图形中,但 LWL 将不会出现在第二个图形组 M 上。 知道如何解决这个问题吗?
正是我所需要的。 当然这仅适用于 JMP12。 谢谢。