テキスト注釈のサイズとテキスト配置の制御: ヘルプが必要です全て、
プロット上に複数のテキスト注釈を配置する必要があります。
これらはワンライナーですが、長さが異なります。そのため、Fixed Size(0)を使用して、ラベルの長さをテキストに合わせて調整する必要があります。
しかし、そうすると縦方向のサイズも調整され、テキストがかなり高く表示されてしまいます。どういうわけか、これが非常に気になります(左のグラフ)。Fixed Size(1) に設定すると、ラベルのサイズを直接制御でき、テキストの配置も問題なく見えます(右のグラフ)。しかし、テキストの長さが異なる場合、ラベルが長すぎるか、テキストがラベルサイズを超えると「Fixed Size(0)」の動作にスナップされてしまい、非常に見苦しいです。


ラベル内のテキストの位置を調整し、固定サイズ(0)を使用する方法をご存知ですか?
<< 垂直方向の配置("bottom")は機能しません。
コードは次のとおりです。
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = bivariate( y( :weight ), x( :height ) );
rbiv = biv << report;
taHeight = 20;
ta1 = rbiv << Add Text Annotation();
ta2 = rbiv << Add Text Annotation();
ta1 << Text( "We need to discuss this at the next meeting." );
ta1 << Text Box( {70, 80, 350, 80+taHeight} );
ta2 << Text( "We need to discuss this at the next " );
ta2 << Text Box( {70, 120, 350, 120+taHeight} );
{ta1, ta2} << Background Color( "Light Yellow" ) << Text Color( "red" )/*<
<SET wrap=""></SET>
<BR /> <BR />
<LINGO-LABS id="lingo-labs-913210" slang="en-US" mode="CREATE">
<LINGO-LABEL>自動化とスクリプト</LINGO-LABEL>
</LINGO-LABS>
Re: テキスト注釈のサイズとテキスト配置の制御: ヘルプが必要ですテキスト ボックスのサイズを自分で計算しない限り、テキスト注釈でそれを制御できるかどうかはわかりません。
グラフィック スクリプトを利用できるでしょうか?
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
biv = dt << bivariate(y(:weight), x(:height));
rbiv = biv << report;
fb = rbiv[FrameBox(1)];
fb << Add Graphics Script(
Back Color("Light Yellow");
Text Color("Red");
Text(Erased, {50, 150}, "We need to discuss this at the next meeting.");
Text(Erased, {50, 135}, "We need to discuss this at the next");
);
Re: テキスト注釈のサイズとテキスト配置の制御: ヘルプが必要です「グラフィックススクリプトを追加」の問題点は、テキストの位置がプロット上の実際の座標で指定されることです。私の場合は、1e-07から9000以上まで、任意の位置を指定できます 
任意の位置の値を計算する関数を書いてみたいと思っていますが、最初の例のようにテキストの周りに border\frame を追加できる場合に限ります。グラフがかなり込み入っている可能性があるので、読みやすく整理するために、視覚的に分離する必要があります。
Re: テキスト注釈のサイズとテキスト配置の制御: ヘルプが必要ですいい考えが浮かんだ。
最初に固定サイズ(0)でテキスト注釈を描画し、長さを測定してから固定サイズ(1)に変更し、測定した幅と希望の高さを手動で設定するとどうなるでしょうか?
問題は、<< Get Size() が不正な値を返すことです。
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = bivariate( y( :weight ), x( :height ) );
rbiv = biv << report;
taHeight = 40;
ta1 = rbiv << Add Text Annotation();
ta2 = rbiv << Add Text Annotation();
ta1 << Text( "We need to discuss this at the next meeting." );
ta1 << Text Box( {70, 80, 350, 80+taHeight} );
ta2 << Text( "We need to discuss this at the next " );
ta2 << Text Box( {70, 120, 350, 120+taHeight} );
{ta1, ta2} << Background Color( "Light Yellow" ) << Text Color( "red" )/*<
<SET wrap=""></SET>
<P>次のようなものが生成されます。</P> //:*/
Show(ta1_x, ta2_x);
/*:
ta1_x = 328;
ta2_x = 328;
グラフ上ではラベルの長さが明らかに異なっているのに、何か見落としているのでしょうか?
Re: テキスト注釈のサイズとテキスト配置の制御: ヘルプが必要です< を使ってみてください<>
Re: テキスト注釈のサイズとテキスト配置の制御: ヘルプが必要です新しいウィンドウのテキストボックスでもサイズチェックができるかもしれません
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = bivariate( y( :weight ), x( :height ) );
rbiv = biv << report;
taHeight = 20;
ta1 = rbiv << Add Text Annotation();
ta2 = rbiv << Add Text Annotation();
nw = new window("", << Window View("Invisible"),
tb1 = Text Box("We need to discuss this at the next meeting."),
tb2 = Text Box("We need to discuss this at the next ")
);
w1 = tb1 << Get Size;
w2 = tb2 << Get Size;
nw << close window;
ta1 << Text( "We need to discuss this at the next meeting." );
ta1 << Text Box( {70, 80, w1[1]+20+70, 80+taHeight});
ta2 << Text( "We need to discuss this at the next " );
ta2 << Text Box( {70, 120, w2[1]+20+70, 120+taHeight});
{ta1, ta2} << Background Color( "Light Yellow" ) << Text Color( "red" )/*<
<SET wrap=""></SET>
Re: テキスト注釈のサイズとテキスト配置の制御: ヘルプが必要ですアドバイスをありがとうございます。はい、ラベルのサイズを取得して設定できるようになりました。
問題は、JSL が行ごとに計算するのではなく、さまざまなプロパティの最終状態を個別に計算し、その後適用することです。
のように:
...
...
ta1<
<FIXED size=""></FIXED>
<P>したがって、幅は最初に設定した幅のままになります。</P> <CODE class=" language-jsl">ta1 << Text( "We need to discuss this at the next meeting." );
ta1 << Text Box( {70, 80, 350, 80+taHeight} );
ta2 << Text( "We need to discuss this at the next " );
ta2 << Text Box( {70, 120, 350, 120+taHeight} );
Wait(0.5) を追加すると、これを克服できました。
最終的なスクリプトは次のようになります。
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = bivariate( y( :weight ), x( :height ) );
rbiv = biv << report;
taHeight = 40;
ta1 = rbiv << Add Text Annotation();
ta2 = rbiv << Add Text Annotation();
ta1 << Text( "We need to discuss this at the next meeting." );
ta1 << Text Box( {70, 80, 350, 80+taHeight} );
ta2 << Text( "We need to discuss this at the next " );
ta2 << Text Box( {70, 120, 350, 120+taHeight} );
{ta1, ta2} << Background Color( "Light Yellow" ) << Text Color( "red" )<
<FIXED size=""></FIXED> <BR />
Re: テキスト注釈のサイズとテキスト配置の制御: ヘルプが必要ですこれもうまくいきました。主観的には私の解決策よりも速いです。デバッグツールで測定してみます。
Re: テキスト注釈のサイズとテキスト配置の制御: ヘルプが必要ですWait(0) を設定すると速度が向上します。実際の待機時間は発生しますが、画面は再描画されます。
Re: テキスト注釈のサイズとテキスト配置の制御: ヘルプが必要です気にしないでください。うまくいきます。
ループの前:
taList = {};
ループ内:
Insert Into(taList, ta);
ループ後:
Wait(0);
taList << Fixed Size(1);
For Each({height, index}, taList << Get Height(),
taList[index] << Set Height(height*0.93)
);
ここで問題となるのは、実際のシナリオでこれを実装するときに、複数のテキスト注釈を持つ複数のプロットがある場合、2 レベルのループで各注釈に対してこのトリックを実行すると、速度が遅すぎることです。
テキスト注釈のリストを作成してみました:
taList={};
そしてループの内側で、現在の ta をリストに追加します。
Insert Into(taList, ta);
ループの最後には次のようになります。
taList
/*:
{DisplayBox[gtext], DisplayBox[gtext],......}
ただし、このリストまたは個別のメンバーに対する操作は機能しません。
何かアイデアはありますか?私のアイデアは次のとおりです。
1. コンテキストボックスを使用して、異なるta間で変数を分離する
2. 何らかの方法でレポートから注釈を取得しますが、XMLを取得すると(<