你好,
我使用“by”函數一次繪製繪圖。
如何使用腳本設定不同的比例?
我嘗試使用“如果”,但沒有成功。
這是我的腳本:
d_graph=dt3 << Graph Builder(
Size( 1200, 300 ),
Show Control Panel( 0 ),
Variables(
X( :Lot ),
X( :ReadPoint, Position( 1 ) ),
Y( :drift% ),
Group X( :Rel_Test ),
Color( :Lot )
),
Elements( Box Plot( X( 1 ), X( 2 ), Y, Legend( 1 ) ) ),
By( :Label ),
SendToReport(
If(:Label == "IGSS" | :Label == "IGSSR" | :Label == "IDSS",
(Dispatch(
{},
"drift%",
ScaleBox,
{Min( 0 ), Max( 20 ), Inc( 5 ), Minor Ticks( 1 ),
Add Ref Line( 10, "Solid", "Medium Dark Red", "1000%", 1 ),
Add Ref Line( 5, "Dotted", "Medium Dark Red", "500%", 1 )})),
(Dispatch(
{},
"drift%",
ScaleBox,
{Min( -0.25 ), Max( 0.25 ), Inc( 0.05 ), Minor Ticks( 1 ),
Add Ref Line( 1.2, "Solid", "Medium Dark Red", "20%", 1 ),
Add Ref Line( 0.8, "Solid", "Medium Dark Red", "-20%", 1 )})))
)
);使用圖形產生器,您可能想要使用頁面而不是按。您必須單獨設定所有軸或使用腳本解決方案,這可能會變得有點複雜。
帶頁面
Graph Builder(
Size(525, 2954),
Show Control Panel(0),
Variables(X(:weight), Y(:height), Page(:age)),
Elements(Points(X, Y, Legend(12)), Smoother(X, Y, Legend(13))),
SendToReport(
Dispatch({}, "height", ScaleBox(2), {Min(49.55686), Max(71.1300045339471), Inc(5), Minor Ticks(1)}),
Dispatch({}, "height", ScaleBox(3), {Min(39.2571438997966), Max(67.3579268825169), Inc(5), Minor Ticks(1)}),
Dispatch({}, "height", ScaleBox(4), {Min(59.60392), Max(70.2079010526316), Inc(2), Minor Ticks(1)}),
Dispatch({}, "height", ScaleBox(5), {Min(60.2030935251799), Max(67.27), Inc(1), Minor Ticks(0)}),
Dispatch({}, "height", ScaleBox(6), {Min(58.60392), Max(69.3254618181818), Inc(2), Minor Ticks(1)}),
Dispatch({}, "height", ScaleBox(7), {Min(60.1377273502176), Max(70.192348647039), Inc(2), Minor Ticks(1)})
)
);
與由
Graph Builder(
SendToByGroup({:age == 12}),
Size(525, 454),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(1)), Smoother(X, Y, Legend(2))),
By(:age),
SendToByGroup({:age == 12}, SendToReport(Dispatch({}, "height", ScaleBox, {Min(46.2708484375), Max(64.6984984375), Inc(5), Minor Ticks(1)}))),
SendToByGroup({:age == 13}, SendToReport(Dispatch({}, "height", ScaleBox, {Min(54), Max(66.3534322916667), Inc(2), Minor Ticks(0)}))),
SendToByGroup({:age == 14}, SendToReport(Dispatch({}, "height", ScaleBox, {Min(58.1802560677083), Max(70.9932314583333), Inc(2), Minor Ticks(1)}))),
SendToByGroup({:age == 15}, SendToReport(Dispatch({}, "height", ScaleBox, {Min(61), Max(66.5205305091258), Inc(1), Minor Ticks(0)}))),
SendToByGroup({:age == 16}, SendToReport(Dispatch({}, "height", ScaleBox, {Min(57.1194704166667), Max(68.432), Inc(2), Minor Ticks(1)}))),
SendToByGroup({:age == 17}, SendToReport(Dispatch({}, "height", ScaleBox, {Min(59.0567933224374), Max(69.0987213244912), Inc(2), Minor Ticks(1)})))
);這是使用 By 時的一種腳本解決方案。根據您獲取最小/最大和參考線值的位置,我很可能會將它們移到 For Each 循環之外。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gbs = dt << Graph Builder(
SendToByGroup({:age == 12}),
Size(525, 454),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(1)), Smoother(X, Y, Legend(2))),
By(:age)
);
For Each({gb}, gbs,
rep = Report(gb);
yaxis = rep[AxisBox(2)];
gbtitle = rep[Outline Box(1)] << Get title;
category = Word(-1, gbtitle, "=");
If(Contains({"12", "14", "15", "16"}, category),
minval = 50;
maxval = 70;
ref1 = 55;
ref2 = 65;
ref1title = "500%";
ref2title = "1000%";
, Contains({"13"}, category),
minval = 0;
maxval = 100;
ref1 = 5;
ref2 = 95;
ref1title = "-20%";
ref2title = "20%";
);
yaxis << Min(minval) << Max(maxval);
yaxis << Add Ref Line(ref1, "Solid", "Medium Dark Red", ref1title, 1);
yaxis << Add Ref Line(ref2, "Solid", "Medium Dark Red", ref2title, 1);
);您也許可以使用 XPath() 來適應@jthi的方法。將此訊息傳送到圖形產生器,如下所示:
xAxis = d_graph << XPath( "//AxisBox" );
xAxis[2::N Items(xAxis)::2] << Min( min ) << Max( max ) ...;
您應該會取得所有軸顯示框的參考清單。您想要尋址 X 軸,即清單中的偶數項目。您可以使用 Index 函數為清單新增下標,並將軸訊息級聯傳送到清單。該清單將為您將訊息分發到每個項目。