如何拉伸GB以填充所有可用空间?假设我有一个 3 列的 Line Up 框和一些显示框,然后作为第二行,我有一个 Unlineup 框,里面有一个图形生成器。
可以通过运行以下脚本查看示例:
dt = New Table( "DEMO",
Add Rows( 10 ),
New Column( "Category",
Character,
"Nominal",
Set Values( {"A", "A", "A", "A", "A", "B", "B", "B", "B", "B"} )
),
New Column( "X",
Character,
"Nominal",
Set Values( {"AA", "AD", "AC", "AD", "AC", "BD", "BF", "BF", "BD", "BS"} )
),
New Column( "Y_veryLongName_toMake_Tabulat_Large",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [12, 32, 42, 23, 21, 12, 34, 53, 23, 12] )
)
);
tab = dt << Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table(
Analysis Columns( :Y_veryLongName_toMake_Tabulat_Large ),
Statistics( Sum, Mean )
),
Row Table( Grouping Columns( :Category, :X ) )
)
);
gb = dt << Graph Builder(
//Size( 528, 464 ),
Show Control Panel( 0 ),
Variables(
X( :Category ),
X( :X, Position( 1 ) ),
Y( :Y_veryLongName_toMake_Tabulat_Large ),
Color( :Category )
),
Elements( Points( X( 1 ), X( 2 ), Y, Legend( 9 ) ) )
);
rtab = tab << Report;
rgb = gb << Report;
lb = LineUp Box(NCol(3), rtab, rtab, rtab, Unlineup Box(rgb) );
nw = New Window("DEMO", Show Menu(0), Show Toolbars(0), lb);所以它看起来是这样的:

现在,我希望图形生成器填充所有水平空间。 我不知道该空间的大小,所以我不想直接指定它,我只是希望它填充所有可用的空间。
我尝试在 RGB 上使用“设置自动拉伸(1,0)”,但没有多大帮助。
通过实验,我发现,如果我转到属性并将 X 的拉伸从中性更改为填充,则从框架框一直到轮廓框的每个框,如下所示:

那么看起来我希望它看起来:

问题:
1. 这是唯一的方法吗?
2. 如果是 - 如何编写脚本?
更新:我想我应该能够将 XPath 与祖先或自我(或者在更简单的变体中只是下面的祖先)一起使用,但我无法让它工作。
rgb << Xpath("//FrameBox/ancestor")大规模定制回复:如何拉伸 GB 以填充所有可用空间?我认为如果在克隆报告后在框架框中设置自动拉伸,它会起作用:
lb = LineUp Box(NCol(3), rtab, rtab, rtab, Unlineup Box(rgb) );
lb[FrameBox(1)] << Set Auto Stretching(1,0);
nw = New Window("DEMO", Show Menu(0), Show Toolbars(0), lb);
克隆框时,拉伸属性通常会被清除,因为布局更改时行为并不总是会转换。
回复:如何拉伸 GB 以填充所有可用空间?嗯,这是一种很好的方法,除了在我的用例中,该脚本在用户连续加载的许多表上运行,并且该窗口 nw 使这些排列框一个接一个地附加。 对于下一个表,前一个表都会关闭,因此我无法获得实时图表,我需要有在 rtable 关闭后保留的报告。
我尝试运行这个表达式:
gb_expr = Expr(
(gb = dt << Graph Builder(
//Size( 528, 464 ),
Show Control Panel(0),
Variables(X(:Category), X(:X, Position(1)), Y(:Y_veryLongName_toMake_Tabulat_Large), Color(:Category)),
Elements(Points(X(1), X(2), Y, Legend(9)))
))<<REPORT></REPORT>
但没有成功。 知道如何修改它,以便在关闭表格时图形生成器不会从窗口中消失吗?
回复:如何拉伸 GB 以填充所有可用空间?其他选项也是直接在新窗口内创建图形生成器
Names Default To Here(1);
dt = New Table("DEMO",
Add Rows(10),
New Column("Category", Character, "Nominal", Set Values({"A", "A", "A", "A", "A", "B", "B", "B", "B", "B"})),
New Column("X", Character, "Nominal", Set Values({"AA", "AD", "AC", "AD", "AC", "BD", "BF", "BF", "BD", "BS"})),
New Column("Y_veryLongName_toMake_Tabulat_Large",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([12, 32, 42, 23, 21, 12, 34, 53, 23, 12])
)
);
tab = dt << Tabulate(
Show Control Panel(0),
Add Table(
Column Table(Analysis Columns(:Y_veryLongName_toMake_Tabulat_Large), Statistics(Sum, Mean)),
Row Table(Grouping Columns(:Category, :X))
)
);
gb_expr = Expr(
gb = dt << Graph Builder(
//Size( 528, 464 ),
Show Control Panel(0),
Variables(X(:Category), X(:X, Position(1)), Y(:Y_veryLongName_toMake_Tabulat_Large), Color(:Category)),
Elements(Points(X(1), X(2), Y, Legend(9)))
)
);
rtab = tab << Report;
lb = Lineup Box(N Col(3), rtab, rtab, rtab, Unlineup Box(gb_expr));
nw = New Window("DEMO", Show Menu(0), Show Toolbars(0), lb);
gb << Auto Stretching("On");回复:如何拉伸 GB 以填充所有可用空间?好吧,我尝试了更多的事情:
rgb << Fit To Window("On");这个没有用。
rgb[FrameBox(1)] << Set Auto Stretching(1,0);
这个,我将自动拉伸应用于 FrameBox,而不是整个报告 - 确实有效。
我在此过程中遇到的问题仍然存在:XPath 轴的正确语法是什么? 比如,祖先,孩子,祖先或自己,等等......