スクリプトガイド > 表示ツリー > 独自のウィンドウの作成 > 既存のレポートを更新する方法
公開日: 11/25/2021

既存のレポートを更新する方法

レポートに表示されるディスプレイボックスの数がわからない場合があります。たとえば、JMPで用意されているプラットフォームを用いて、1つまたは複数の変数を分析するスクリプトなどです。そのようなスクリプトは、実行するたびに変数の個数が変わる可能性があるので、そこで表示されるディスプレイボックスの個数は、スクリプトを実行する前にはわかりません。

以下の節では、Append()、Prepend()、Delete()、およびSib Append()を使用して、レポートのディスプレイボックスを追加したり削除したりする方法を説明します。

Append

Appendメッセージを使うと、既存の表示の末尾にディスプレイボックスを追加できます。たとえば、空のボックスを1つ作成した後、Appendを使って各変数の結果を追加していけます。Appendメッセージによって、既存のレポートに独自の情報を追加することもできます。

次の例では、変数effectsList内にラベル名のリストがあり、そのラベル名が行列varprop内の列に対応しているとします。つまり、effectsList[1]varprop[0,1]のラベル名に、effectsList[2]varprop[0,2]のラベル名に、というように順に対応しているとします。

varprop = [0 1 2, 3 4 5, 6 7 8];
effectsList = {"いち", "に", "さん"};

まず、次のスクリプトによって、H List Boxを含む空のOutline Box(アウトラインボックス)が作成します。内部の空のコンテナにはhbという名前が付けられます。

win = New Window( "H List Boxの例",
	Outline Box( "分散", hb = H List Box() )
);

次に、effectsListの項目数分だけforループを繰り返し、effectsListの各要素に対応したNumber Col Box(数値列ボックス)を追加します。

For( i = 1, i <= N Items( effectsList ), i++,
	Eval(
		Substitute(
				Expr(
					hb << Append(
						Number Col Box( effectslist[i], varprop[0, i] )
					)
				),
			Expr( i ), i
		)
	)
);

Sib Append()は、Append()に似ていますが、ディスプレイボックスを最後の子ディスプレイボックスの兄弟として作成します。図11.24に、Append()Sib Append()を比較する例があります。

Prepend

PrependメッセージはAppendと同様に動作しますが、項目をディスプレイボックスの最後にではなく先頭に追加します。ディスプレイボックスが追加不可なタイプの場合、その子ディスプレイボックスのうち追加が可能なものに、Prependメッセージが送られます。このため、表示ツリーの先頭にコマンドを送っても問題ありません。

たとえば、次の例は最上部にボタンボックスのある「二変量」レポートを作成します。

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :"身長(インチ)"n ), X( :"体重(ポンド)"n ), Fit Line );
 

/* bivレポートレイヤーの最初のアウトラインボックスに

Prepend メッセージを送る */

(biv << Report)(Outline Box( 1 )) << Prepend(
 

// 2次曲線をあてはめるButton Boxを追加

		Button Box( "2次曲線のあてはめ", biv << Fit Polynomial( 2 ) )
);

「2次曲線のあてはめ」 ボタンをクリックすると、グラフに2次曲線が追加されます。

ツリーの最上部にこのボタンを追加しても、同じ結果となります。

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :"身長(インチ)"n ), X( :"体重(ポンド)"n ), Fit Line );
biv << Report << Prepend( // レポートにprependメッセージを送る
 

// Button Boxをレポートの先頭に追加

	Button Box( "2次曲線のあてはめ", biv << Fit Polynomial( 2 ) )
);

削除

Deleteメッセージは、指定されたディスプレイボックスとその子をすべてレポートから削除します。完全に動的な表示を作成する場合、このメッセージとAppendおよびPrependメッセージを一緒に使うと便利です。次の例では、テキストボックスを別のテキストボックスに置き換えます。このケースではSet Textを使う方法もありますが、他の大半のディスプレイボックスは内容を変更できません。

win = New Window( "X",
	list = V List Box(
		t1 = Text Box( "t1" ),
		t2 = Text Box( "t2" )
	)
);
t1 << Delete;
list << Append( t1 = Text Box( "t1new" ) );

メモ: JMPのプラットフォームからは、ディスプレイボックスを削除しないようにしてください。Hide( 1 )メッセージまたはVisibility( "Hidden" )メッセージを、非表示にしたいディスプレイボックスに送るようにしてください。

Sib Append

Sib Appendメッセージを使うと、既存のディスプレイボックスのすぐ後ろにディスプレイボックスを追加できます。図11.23は、2つのピクチャーボックスツリーを示します。PictureBox( 1 )には、二変量の関係の散布図が含まれています。Picture Box ( 2 )には、緑の線と「平均のあてはめ」というテキストボックスが含まれており、これらは「平均のあてはめ」メニューに対応しています。

これらの2つのボックスの間にテキストボックスを挿入したいとします。Picture Box ( 1 )と同じレベルにボックスを追加する必要があるので、Sib Appendメッセージを送ります。

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate(
	Y( :"体重(ポンド)"n ),
	X( :"身長(インチ)"n ),
	Fit Mean( {Line Color( {57, 177, 67} )} )
);
 

/* Report関数はbivオブジェクトからレポートオブジェクトを戻す。

最初のPicture Boxのすぐ後ろにText Boxを追加する */

Report( biv )[Picture Box( 1 )] << Sib Append( Text Box( "Hello There" ) );

図11.23 同じレベルにテキストボックスを追加 

Appending a Sibling Text Box

メモ: 図11.23では、追加された兄弟テキストボックスが「ツリー構造の表示」ウィンドウの最初のピクチャーボックスの下に表示されています。従来の「ツリー構造の表示」ウィンドウのディスプレイツリーでは、兄弟は並べて表示されます。表示ツリーの閲覧を参照してください。

図11.24は、Append()Sib Append()の違いを示しています。Append()は、ディスプレイボックスを親ディスプレイボックスのとして作成します。Sib Append()は、ディスプレイボックスを最後のディスプレイボックスの兄弟として作成します。

図11.24 Append(左)とSib Append(右) 

Append (Left) and Sib Append (Right)

メモ: 親ディスプレイボックスがV List Box()ではない場合、Sib Append()は、そのディスプレイボックスをV List Box()に入れます。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).