关于导航复杂显示树的问题你好。 我的问题是是否有一种简单的方法可以导航显示树以到达绘图的 (x) AxisBox,如果不知道树中是否有其他 (y) AxisBoxes 在它之前。 我正在考虑可能使用 Xpath 或其他方法。 在我的脚本中,我为我的结果创建了一个窗口,包括一个分布。 用户可以选择包括直方图、异常值箱线图和/或正态分位数图。 例子:
Names Default to Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
//User controllable options to plot histogram, outlier box plot, or normal quantile plot
histopt = 1;
outlopt = 1;
nqplopt = 1;
//Make results window
Try(Window("My Window") << Close Window);
win = New Window("My Window",
TextBox("Important text info"),
LUB = LineUpBox(NCol(1), Spacing(10,10))
);
//Add distribution to it.
Eval(EvalExpr(
LUB << Append(
dist = Distribution(
Column("Height"),
Histogram(Expr(histopt)),
Outlier Box Plot(Expr(outlopt)),
Normal Quantile Plot(Expr(nqplopt)),
Capability Analysis(0),
Quantiles(0),
Vertical(0),
Stack(0),
Automatic Recalc(0)
);
);
));
win << Show Tree Structure;如上所述选择所有 3 个绘图选项后,生成的树结构显示,正态分位数图的 (y) AxisBox 的标题为“AxisBox(1)”,而 (x) AxisBox 的标题为“AxisBox(2)”。 如果我关闭正常分位数选项并再次运行脚本,则 (x) AxisBox 现在标题为“AxisBox(1)”。 所以不幸的是,我不能简单地通过它的名称来引用轴框,而且我不喜欢这样做,因为显示框的名称可以改变。 我不太了解 XPath,无法告诉它如何仅查找 x 轴 Axis Box,但我想知道是否有类似的方法:
win << XPath("\\AxisBox() = "Xaxis");或者类似的东西?
回复:关于导航复杂显示树的问题谢谢特克斯。 我不知道您可以从报告中获取脚本。 这打开了几扇门。 虽然我仍然希望有一些方法可以通过 XPath 做到这一点。
回复:关于导航复杂显示树的问题有趣的问题。我无法想出一个直截了当的解决方案。Xpath 似乎返回了平台所有可能的轴框,而不仅仅是当前显示的轴框。但是,我认为您可以检查 Axis Box() 对象以确定它是普通分位数框还是直方图。Normal Quantile 框的比例是“Normal Probability”,如果轴是直方图,我不相信你会看到。但是还有一个问题......似乎没有<< get scale 用于轴框的选项......但是,它出现在轴框()的脚本中。所以如果你
theScript = report(dist)[AxisBox(1)] << get script;
你会回来的
Report( dist )[axisbox( 1 )] << get script = {Scale( "Normal Probability" ), Format( "Best" ),
Min( 0.0195121951219512 ), Max( 0.980487804878049 ), Interval( "Numeric" ), Inc( 0.1 ), Minor Ticks( 0 ),
Label Row Nesting( 1 ), Label Row(
{Automatic Font Size( 0 ), Automatic Tick Marks( 0 ), Inside Ticks( 0 ), Label Alignment( "Near" ),
Label Buffer Scale( 1 ), Label Orientation( "Horizontal" ), Lax Label Range( 0 ),
Major Grid Line Color( -14145495 ), Minimum Depth( 0 ), Minimum Font Size( 7 ),
Minor Grid Line Color( -15790320 ), Show Major Grid( 1 ), Show Major Labels( 1 ), Show Major Ticks( 1 ),
Show Minor Grid( 0 ), Show Minor Labels( 0 ), Show Minor Ticks( 1 ), Tick Offset( 0 ), Wrap Lines( 0 )}
)};
您可以在其中扫描并找到正在使用的秤。然后从那里确定要处理哪个 AxisBox。