大家好
我正在使用圖形生成器在報告中製作圖形。 我喜歡在圖表上添加參考線作為 CL、LCL、UCL。 我將它們放在表格的列(例如 X)中。 我試著在腳本中這樣稱呼它們,
{新增參考線(:X, "實心", "黑色", "LCL", 1 )}
但這不起作用
請你幫助我好嗎
謝謝
ColMin 和 ColMax 只會從列中取得最小值或最大值,並忽略缺失值。
一些簡單的例子:
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(5),
New Column("Value", Numeric, "Continuous", Format("Best", 12), Set Values([., 1, ., ., 2]))
);
Show(ColMin(:Value));
Show(ColMax(:Value));
//A bit more complicated. Loc gets rows which have non missing value as a matrix
//Then we use that matrix to get values from Value column
//and finally from that we will use only the first index
Show(:Value[Loc(:Value << get as matrix)][1]);
//You can run this in parts to see how it works
//Loc(:Value << get as matrix)
//:Value[Loc(:Value << get as matrix)]
//Will return missing value
Show(:Value[1]);謝謝。它有效,儘管我仍然不知道列中是否缺少一些數據,如何選擇帶有數據的單元格。 但在這種情況下,使用這些函數是有效的。

您能提供某種範例資料表嗎? 它沒有任何真實的數據,只要它展示了數據的基本想法即可。 根據資料的外觀,您可能可以使用 ColMin/ColMax 函數,例如 ColMin(dt:UCL)。
@jthi , 謝謝。
我將控制限作為列。 我可以將一個單元格稱為 UCL[1],但問題是,其中一些列具有空白單元格,這些空白單元格可能是第一個或任何其他單元格。 我想從不為空的列中的單元格添加參考行。
你知道我該怎麼做嗎?
謝謝
根據您的數據,您可以這樣做:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
//add limit columns
dt << New Column("UCL", Numeric, Continuous, Set Each Value(70));
dt << New Column("CL", Numeric, Continuous, Set Each Value(60));
dt << New Column("LCL", Numeric, Continuous, Set Each Value(50));
gb = Graph Builder(Variables(X(:age), Y(:height)), Elements(Points(X, Y, Legend(4))));
axisb = (report(gb)[axisbox(2)]);
axisb << ({
Add Ref Line(dt:UCL[1], "Solid", "Black", "UCL", 1),
Add Ref Line(dt:CL[1], "Solid", "Black", "CL", 1),
Add Ref Line(dt:LCL[1], "Solid", "Black", "LCL", 1)
});或直接繪製這些列:

或將它們設為列屬性作為規格限制:


如果需要,所有這些都可以編寫腳本。
編輯:
如果您的意思是設定了控制限制列屬性,則需要一些額外的腳本來獲取列屬性的限制(解析部分將在很大程度上取決於大小寫以及控制限制的設定方式,但想法應該相同):
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Quality Control/Coating.jmp");
obj = dt << Control Chart(Sample Size(:Sample), KSigma(3), Chart Col(:Weight, XBar, R));
Wait(0);
obj << Save Limits(in Column);
gb = Graph Builder(
Variables(X(:Sample), Y(:Weight)),
Elements(Points(X, Y, Legend(3)), Smoother(X, Y, Legend(4)))
);
//get Control Limits column property and parse limits
colProp = dt:weight << Get Property("Control Limits");
xbarLimits = Words(Char(colProp[1]));
xbarCL = Num(Word(3, xbarLimits[1], "()"));
xbarLCL = Num(Word(2, xbarLimits[2], "()"));
xbarUCL = Num(Word(2, xbarLimits[3], "()"));
//add control limits
axisb = (report(gb)[axisbox(2)]);
axisb << ({
Add Ref Line(xbarUCL, "Solid", "Black", "UCL", 1),
Add Ref Line(xbarCL, "Solid", "Black", "CL", 1),
Add Ref Line(xbarLCL, "Solid", "Black", "LCL", 1)
});