如何使用列作為二元表的參考線? 我有一個數據表,有 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。 謝謝。