我有一個腳本,可以在其中使用Page By創建一組圖形。 我想為每個圖形添加不同的參考線,從列表中提取。
目前,我知道如何指定要添加參考線的圖形的唯一方法是使用ScaleBox通過其整數索引(似乎從2開始)引用該圖形。 (請讓我知道是否有比使用整數索引更好的方法。)例如:
For( i= 1, i<= n, i+=1,
RefLineValue= RefLineList[i];
mygraph << SendToReport(
Dispatch(
{},
"Data",
ScaleBox( i+1 ),
{Add Ref Line( RefLineValue, "Solid", "Black", "", 1 )}
);
)
);這幾乎可行,但是我的問題是我不知道如何獲取為ScaleBox函數正確指定的整數索引。 Page By函數似乎將圖形放入某種的字母順序,所以我想如果我使用Sort List(RefLineList),則列表的順序將與圖形的順序匹配。
但是排序並不完全一致:例如,如果Page By角色中的變量為[A50,B50,B100],則圖形將排序為[A50,B50, B100 ],但使用“排序列表”創建的列表將被排序[A50, B100 ,B50]。
有沒有一種方法可以通過名稱而不是整數索引來指定Page By圖? 如果沒有,是否可以對列表進行排序,使列表順序與圖順序匹配?
Graph Builder使用混合排序。這是一個小腳本,可用於您的列表值
refList = {"B100", "A50", "B50"};
For( i = 1, i <= N Items( refList ), i++,
If( Length( refList[i] ) < 4,
refList[i] = Substr( refList[i], 1, 1 ) ||
Substr( "00", Length( refList[i] ) - 1 ) ||
Substr( refList[i], 2 )
);
);
refList = Sort List( refList );
For( i = 1, i <= N Items( refList ), i++,
While( Length( Word( 1, refList[i], "0" ) ) == 1,
refList[i] = Substr( refList[i], 1, 1 ) ||
Substr( refList[i], 3 )
)
);
我還建議您在設置參考線時使用一種更簡單的方法。如果直接轉到要添加參考線的AxisBox,則使用更簡單的代碼即可完成。下面是一個例子。此外,《腳本指南》完整地介紹瞭如何使用“顯示樹”,而“腳本索引”則提供了所有功能的定義和示例。
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
refList = {60,65};
gb = dt << Graph Builder(
Size( 528, 956 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ), Page( :sex ) ),
Elements( Points( X, Y, Legend( 8 ) ), Smoother( X, Y, Legend( 9 ) ) )
);
Summarize( dt, groups = by( :Sex ) );
For( i = 1, i <= N Items( groups ), i++,
Report( gb )[axisbox( i * 2 )] << Add Ref Line(
refList[i],
"Solid",
"Black",
"",
1
)
);