如何拉伸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 軸的正確語法是什麼? 例如,祖先,孩子,祖先或自己,等等......