用于将图形生成器中的所有轴限制设置为根据显示数据计算得出的值的脚本为了加快工作流程的一个步骤,我正在尝试编写一个脚本,该脚本自动将图形生成器中所有 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);