建立報表時無法變更 FrameBox 大小 - 僅當建立所有顯示方塊和視窗時。全部,
我有一個腳本,裡面有一個函數可以建立一個 GraphBuilder。然後它會被打包到顯示框中,並放入一個新視窗。不知何故,在函數內部更改 FrameBox 大小的命令被忽略了,我只能在建立視窗時更改它。這是為什麼呢?我希望這個功能在函數內部,這樣它就能輸出一個不需要額外修改的圖。在函數內部可以更改標題,為什麼不能更改大小呢?
以下是透過 3 種不同的方式嘗試更改 FrameBox 大小的範例 - 只有第三次有效。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
X_Parameter = "height";
Y_Parameter = "weight";
groupColumn = "sex";
titleText = "Example";
GBfunction= Function( {dt, X_parameter, Y_Parameter, groupByColumnString, titleText = ""},
groupByColumn = Column( dt, groupByColumnString );
cb = Context Box(
gb = Graph Builder(
Size( 350, 600 ),
Ignore Platform Preferences( 1 ),
Show Control Panel( 0 ),
Variables( X( Column( X_Parameter ) ), Y( Column( Y_Parameter ) ), Overlay( groupByColumn ) ),
);
rgb = gb << Report;
(rgbOB = ((rgb << XPath( "//OutlineBox[@helpKey = 'Graph Builder']" ))[1])) << Set Title( titleText );
//Attempt #1
(rgb << XPath( "(//OutlineBox//FrameBox)" )) << Frame Size( 350, 200 );
//Attempt #2
//(rgbOB << XPath( "//FrameBox" )) << Frame Size( 350, 200 );
);
Return( cb );
);
lub = Lineup Box( N Col( 3 ) );
lub << Append( GBfunction( dt, X_Parameter, Y_Parameter, groupColumn, titleText ) );
ob_group = Outline Box( "GB Function example: " || (dt << Get Name) );
ob_group << Append( lub );
nw = New Window( (dt << get name), ob_group );
//Attempt #3
rgb = ob_group << XPath( "//OutlineBox[@helpKey='Graph Builder']" );
//(rgb << XPath( "(//OutlineBox//FrameBox)" )) << Frame Size( 350, 200 );
自動化和腳本回覆:建立報告時無法更改 FrameBox 大小 - 僅當建立所有顯示框和視窗時。我認為更改幀大小無法正常工作,因為幀尚未可視化,一些自動調整大小確實會接管,並且可能存在一些時間問題。
回覆:建立報表時無法變更 FrameBox 大小 - 僅當建立所有顯示方塊和視窗時。我嘗試將自動拉伸設為 0,並將拉伸設為無,顯然沒有幫助:(
回覆:建立報表時無法變更 FrameBox 大小 - 僅當建立所有顯示方塊和視窗時。弄清楚是什麼導致尺寸變得奇怪並不總是那麼容易。你不使用 Graph Builder 的 << Size 有什麼具體原因嗎?我知道有時它可能需要一些預先計算,例如在使用群組或包裝時。
看更多...
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
X_Parameter = "height";
Y_Parameter = "weight";
groupColumn = "sex";
titleText = "Example";
GBfunction = Function({dt, X_parameter, Y_Parameter, groupByColumnString, titleText = ""}, {Default Local},
groupByColumn = Column(dt, groupByColumnString);
cb = Context Box(
gb = dt << Graph Builder(
Size(100, 100),
Ignore Platform Preferences(1),
Show Control Panel(0),
//Fit To Window("Off"),
Variables(
X(Column(X_Parameter)),
Y(Column(Y_Parameter)),
Overlay(groupByColumn)
),
);
);
rgb = Report(gb);
(rgbOB = ((rgb << XPath("//OutlineBox[@helpKey = 'Graph Builder']"))[1])) << Set Title(titleText);
fbs = rgb << XPath("(//OutlineBox//FrameBox)");
gb << Size(400, 250);
Return(cb);
);
lub = Lineup Box(N Col(3));
lub << Append(GBfunction(dt, X_Parameter, Y_Parameter, groupColumn, titleText));
ob_group = Outline Box("GB Function example: " || (dt << Get Name));
ob_group << Append(lub);
nw = New Window((dt << get name), ob_group);
回覆:建立報告時無法更改 FrameBox 大小 - 僅當建立所有顯示框和視窗時。是的,這是有原因的——我需要模仿先前使用 Fit Y by X 的腳本版本中的外觀和感覺。
GraphBuilder 將根據 GB 顯示框中的其他元素(例如軸或圖例大小)變更 FrameBox 大小。
最後,這些圖表將產生一份報告,其中圖表區域的大小(即 FrameBox 的具體含義)應該在報告中的不同圖表之間保持一致。這就是原因所在。
回覆:建立報表時無法變更 FrameBox 大小 - 僅當建立所有顯示方塊和視窗時。一種選擇是先建立新視窗
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
X_Parameter = "height";
Y_Parameter = "weight";
groupColumn = "sex";
titleText = "Example";
GBfunction = Function({lub, dt, X_parameter, Y_Parameter, groupByColumnString, titleText = ""}, {Default Local},
cb = Context Box(
gb = dt << Graph Builder(
Size(600, 600),
Ignore Platform Preferences(1),
Show Control Panel(0),
Fit To Window("Off"),
Variables(X(Eval(X_Parameter)), Y(Eval(Y_Parameter)), Overlay(Eval(groupByColumnString))),
)
);
rgb = Report(gb);
lub << Append(cb);
(rgbOB = ((rgb << XPath("//OutlineBox[@helpKey = 'Graph Builder']"))[1])) <<
Set Title(titleText);
fbs = rgb << XPath("(//OutlineBox//FrameBox)");
fbs << Frame Size(400, 250);
);
lub = Lineup Box(N Col(3));
ob_group = Outline Box("GB Function example: " || (dt << Get Name));
ob_group << Append(lub);
nw = New Window((dt << get name), Window View("Invisible"), ob_group);
GBfunction(lub, dt, X_Parameter, Y_Parameter, groupColumn, titleText);
nw << Show Window(1);
回覆:建立報表時無法變更 FrameBox 大小 - 僅當建立所有顯示方塊和視窗時。你的範例按寫的那樣運行。然而,當我嘗試在實際腳本中實作它時,它最終會將 FrameBox 的大小從 Size(350, 600) 調整為其他值。
基本上,我使用 LineUpBox 是有原因的——我在這個框中產生了幾個圖,並且每隔三個圖(或者更準確地說,每行最右邊的每個圖)都會顯示圖例(所有圖都相同)。所以,當我用三個圖運行它時,所有三個 FrameBox 的最終大小最終都是:
{{350, 220}, {350, 220}, {350, 240}}
而不是我試圖將其調整為的 {350, 200} 或 GraphBuilder 所用的初始 {350, 600}。
稍後我將嘗試製作一個可以打破您的建議的有效範例。
回覆:建立報告時無法更改 FrameBox 大小 - 僅當建立所有顯示框和視窗時。這一直是 GraphBuilder 的一個 bug,而且沒有簡單的解決方法。我有一個外部程式可以向 JMP 發送通知(它是一個本地伺服器,JMP 用 runcommand 啟動),我給它發送了一條訊息,讓它在 0.25 秒內 ping 回 JMP,然後我觸發了強制調整幀大小的操作——現在所有框都繪製完成後才會執行。