用於將圖形生成器中的所有軸限制設置為根據顯示數據計算得出的值的腳本為了加快工作流程的一個步驟,我正在嘗試編寫一個腳本,該腳本自動將圖形生成器中所有 Y 軸的軸限制設置為可以根據顯示的數據計算的某些值(分位數)。
計劃是:
- 獲取軸標籤
- 使用數據表中的相應列計算所需的限制
- 相應地設置限制。
事實證明,這比一開始預期的要復雜,因為可以使用本地數據過濾器,可以修改標籤等。
所以我寧願直接從圖形生成器獲取每個軸的不同 Y 值。 如何獲取特定軸的值?
例如如果我有
R = Current Report();
AB = R[axisbox(2)] ;
ab_min = -100; // How to access the value list containing all the values that are used by default to compute axis limits of AB here?
ab_max = 100;
AB << Min(ab_min);
AB << Max(ab_max);
通過使用“十字”,我最終得到了一些 FrameBox,但我不知道如何從它們中獲取值。
有什麼想法或更好的方法嗎?
謝謝羅布
大規模定制回复:用於將圖形生成器中的所有軸限制設置為根據顯示數據計算得出的值的腳本像這樣的東西應該可以讓你獲得標記值
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(570, 1049),
Show Control Panel(0),
Variables(
X(:age),
Y(:height),
Page(:sex)
)
);
frame = Report(gb)[FrameBox(1)];
frames = Report(gb) << XPath("//FrameBox");
marker_segs = (frames << Find Seg(Marker Seg(1)));
xm = marker_segs << Get X Values;
ym = marker_segs << Get Y Values;
show(xm, ym);
一旦 jmp 自動找到多邊形的質心點,就從圖形生成器導出 x&y 值(坐標)
如何獲取圖例框信息,例如顏色和標記類型
回复:用於將圖形生成器中的所有軸限制設置為根據顯示數據計算得出的值的腳本目前,我沒有看到一種可靠的方法來獲取從圖形生成器繪製在軸上的列或列名稱。 我能想到的唯一方法是獲取軸標籤,但這可能已被用戶修改,以便文本不再是列名稱。 此外,可以直接在圖形生成器中轉換/修改列。 如果這樣的列繪製在軸上,我根本無法在數據表中找到該列。 是的,如果我在數據表中找到正確的列,我將必須應用本地數據過濾器中的過濾器設置。
如果我可以以某種方式直接從軸/圖形生成器獲取繪製的數據值,那麼繪製哪種列、應用哪個過濾器、用戶更改了哪些標籤以及其他可能出錯並破壞我的腳本的內容並不重要。
回复:用於將圖形生成器中的所有軸限制設置為根據顯示數據計算得出的值的腳本為什麼只從數據表中獲取值不起作用?如果已從分析中排除行,或者已應用本地數據過濾器,則只需應用這些條件。
names default to here(1);
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(570, 1049),
Show Control Panel(0),
Variables(
X(:age),
Y(:height),
Page(:sex)
)
);
allHeights = dt:height << get values;
// or if you want just the unique values of the column height, this
// is my prefered way to get them
uniqueHeights = associative array(dt:height<<GET values=""> </GET>
回复:用於將圖形生成器中的所有軸限制設置為根據顯示數據計算得出的值的腳本你好@jthi , 你好@tx尼爾森
謝謝,但我認為我們有一點誤會。
我不想從所有 y 軸獲取當前的最小值和最大值。 我想獲取顯示數據的所有相應 y 值,以便計算更合適的限制。
例如,如果 y 軸顯示 1000 個值,我想獲取這 1000 個 y 值的列表或向量。
回复:用於將圖形生成器中的所有軸限制設置為根據顯示數據計算得出的值的腳本以下 JSL 將返回當前報表的所有 AxisBox() 的列表。AxisBox(1) 和 AxisBox(2)。所以可以做的是處理條目 2、4、6 等以訪問所有 AxisBox(2)
r=current report();
yMaxs = ((r[1]<<TOP parent=""></TOP>
回复:用於將圖形生成器中的所有軸限制設置為根據顯示數據計算得出的值的腳本像這樣的東西會起作用嗎? 使用 XPath 獲取所有軸盒,然後找出哪些是 Y 軸。 之後你應該能夠操縱它們
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(570, 1049),
Show Control Panel(0),
Variables(
X(:age),
Y(:height),
Page(:sex)
)
);
axisboxes = Report(gb) << XPath("//AxisBox");
/*y-axis seems to be even numbers*/
yaxis = axisboxes[2::N Items(axisboxes)::2];
ymin = yaxis << get min;
ymax = yaxis << get max;
show(ymin, ymax);