レポートの作成時にフレーム ボックスのサイズを変更することはできません。すべての表示ボックスとウィンドウが作成されたときのみ変更できます。全て、
GraphBuilderを作成する関数を使ったスクリプトがあります。GraphBuilderはディスプレイボックスにパックされ、新しいウィンドウに表示されます。しかし、関数内からFrameBoxのサイズを変更するコマンドが無視され、ウィンドウが作成された時にしかサイズを変更できません。なぜでしょうか?この機能を関数内に組み込み、追加の調整を必要としないプロットを出力できるようにしたいです。関数内でタイトルの変更はできるのに、サイズの変更はできないのはなぜでしょうか?
以下は、FrameBox のサイズを変更する 3 つの異なる試みの例です。機能するのは 3 番目の方法だけです。
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 );
自動化とスクリプトRe: レポートの作成時にフレーム ボックスのサイズを変更することはできません - すべての表示ボックスとウィンドウが作成された場合のみ。フレームがまだ視覚化されていないため、フレーム サイズの変更は適切に機能しないと思います。一部の自動サイズ変更が実行され、タイミングの問題も発生する可能性があります。
Re: レポートの作成時にフレーム ボックスのサイズを変更することはできません - すべての表示ボックスとウィンドウが作成された場合のみ。自動ストレッチを0に設定し、ストレッチをなしにしてみましたが、明らかに効果はありませんでした。:(
Re: レポートの作成時にフレーム ボックスのサイズを変更することはできません - すべての表示ボックスとウィンドウが作成された場合のみ。サイズがおかしな値になっている原因を突き止めるのは必ずしも簡単ではありません。グラフビルダーの「サイズ」機能を利用しないのは何か特別な理由があるのでしょうか?グループや折り返しを使用する場合など、事前計算が必要になる場合があることは承知しています。
もっと見る...
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);
Re: レポートの作成時にフレーム ボックスのサイズを変更することはできません - すべての表示ボックスとウィンドウが作成された場合のみ。はい、理由があります。Fit Y by X を使用したスクリプトの以前の反復と同じ外観と操作感を模倣する必要があるのです。
GraphBuilder は、GB 表示ボックス内の他の要素 (たとえば、軸や凡例のサイズ) に応じて FrameBox のサイズを変更します。
最終的にこれらのプロットはレポートに出力されますが、レポート上の異なるプロット間でグラフ領域(正確にはフレームボックス)のサイズが一致している必要があります。それが理由です。
Re: レポートの作成時にフレーム ボックスのサイズを変更することはできません - すべての表示ボックスとウィンドウが作成された場合のみ。1つの選択肢としては、まず新しいウィンドウを作成することです
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);
Re: レポートの作成時にフレーム ボックスのサイズを変更することはできません - すべての表示ボックスとウィンドウが作成された場合のみ。例は記述通りに動作します。しかし、実際のスクリプトに実装しようとすると、FrameBoxのサイズが最後にSize(350, 600)から別のサイズに変更されてしまいます。
基本的に、LineUpBox を使用するのには理由があります。このボックスに複数のプロットを生成し、3つおき(正確には各行の右端)に凡例を表示します(すべてのプロットで同じです)。そのため、3つのプロットで実行すると、3つのFrameBoxの最終的なサイズは次のようになります。
{{350, 220}, {350, 220}, {350, 240}}
私がサイズを変更しようとしている {350, 200} や、GraphBuilder が作成した初期の {350, 600} ではなく。
後ほど、あなたの提案を覆す実用的な例を作成してみようと思います。
Re: レポートの作成時にフレーム ボックスのサイズを変更することはできません - すべての表示ボックスとウィンドウが作成された場合のみ。これはGraphBuilderの長年のバグで、簡単な回避策はありません。JMPに通知を送信できる外部プログラム(JMPがruncommandで起動するローカルホストサーバー)を使っていて、0.25秒後にJMPにpingを返すようにメッセージを送ります。そして、そのpingbackでフレームサイズの強制設定をトリガーします。これで、ボックスがすべて描画された後に強制設定が実行されるようになりました。