結果は、プラットフォームを起動すると、その結果は2種類のオブジェクトになります。1つは、「レポート」と呼ばれるオブジェクトです。「レポート」は、ディスプレイボックスで構成されています。もう1つは、「プラットフォーム」と呼ばれるオブジェクトです。「プラットフォーム」は、コマンド(すなわちメッセージ)を受け入れるオブジェクトです。
プラットフォームに送ることができるメッセージの1つに、Reportメッセージがあります。Reportメッセージは、レポート内のディスプレイボックスに対する参照を、プラットフォームから作成します。
レポートの最上部にある赤い三角ボタンのメニューは、プラットフォームオブジェクトにつながっており、このメニューを使うと対話式にメッセージをプラットフォームに送れます。
次の例は、「二変量」プラットフォームで平均や多項式をあてはめており、そのプラットフォームへの参照を取得しています。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( // bivは分析レイヤーを参照
X( :"身長(インチ)"n ),
Y( :"体重(ポンド)"n ),
Fit Mean,
Fit Polynomial( 4 )
);
結果を表示しているディスプレイボックスへの参照を取得するには、Reportメッセージを用います。たとえば、先ほどのスクリプトに次のような式を追加します。
rbiv = biv << Report; // rbivはレポート層を参照
この後、以下の節の説明に従い、レポートレイヤーのディスプレイボックスを操作することができます。
次の例では、「二変量」プラットフォームを実行し、そのレポートオブジェクトへの参照をrbiv変数に格納します。その後、そのrbivレポートオブジェクト内にあるフレームボックスへの参照を、fbx変数に格納します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( // bivは分析レイヤーを参照
Y( :"体重(ポンド)"n ),
X( :"身長(インチ)"n ),
Fit Mean( {Line Color( {57, 177, 67} )} )
);
rbiv = biv << Report; // レポートレイヤーをrbivに割り当てる
fbx = rbiv[Frame Box( 1 )];
fbxが定義されたら、それにメッセージを送ることができます。
fbx << Set Background Color( blue ); // フレームボックスを青色にする
Set Background Colorメッセージは、グラフ内を右クリックして[背景色の設定]>[青]を選択する作業に相当します。
フレームボックスに送ることのできるメッセージの種類を調べるには、[ヘルプ]>[スクリプトの索引]を選択し、[frame box]を検索します。
図11.6 「スクリプトの索引」のディスプレイボックスリスト
「スクリプトの索引」の代わりにShow Properties()関数を使用する方法もあります。その場合、使用できるメッセージはログに出力されます。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y(:"体重(ポンド)"n ), X(:"身長(インチ)"n ) );
Show Properties( biv );
Show Points [ブール] [デフォルトはオン]
Histogram Borders [ブール]
Fit Mean [アクション](Fits a flat line at the mean.)
...
どのオブジェクトの場合も、メッセージの多くは、ポップアップメニューの項目と一致します。主要なディスプレイボックスへのメッセージについては、次の節の独自のウィンドウの作成で、さらに詳しく説明します。
添え字を使うと、レポート内の特定のディスプレイボックスを参照できます。ディスプレイボックスは、番号を指定して参照できます。次の式は、ディスプレイツリー内で2番目に位置するアウトラインボックスを指定しています。
var = Outline Box[2];
レポートを操作するもう一つの方法は、文字列の検索することです。次の式は、特定の文字列を含むレポートを指定しています。
var = report[text];
この式は、レポートの中でtextというタイトルのディスプレイボックスを検索します。タイトル(text)には、タイトルの一部ではなく完全な文字列を指定する必要があります。textの部分には、文字列を含む任意の式を指定することもできます。この方法は、添え字を使ってディスプレイボックスを参照する方法に比べると確実性が低くなります。なぜなら、レポート内の文字列は頻繁に変更されるためです。
通常、メッセージを簡単に送れるように、レポートの一部を変数に割り当てます。たとえば、「二変量」レポートの「分散分析」アウトラインボックスを見つけるには、次の式を使用します。
var = rbiv["分散分析"];
以下の節で、添え字を使ってディスプレイボックスを参照するその他の方法について説明します。
文字列の一部とワイルドカード文字(?など)を使って、アウトラインタイトルの残りの部分と一致させることができます。指定する文字列の中には、どんな文字の代わりにもなるワイルドカード文字「?」を使用できます。次のスクリプトは、「平均」で始まる文字列を探し、「平均のあてはめ」を見つけ、「平均のあてはめ」のアウトラインを開きます。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate(
Y( :"体重(ポンド)"n ),
X( :"身長(インチ)"n ),
Fit Mean( {Line Color( {57, 177, 67} )} ),
Fit Polynomial( 4 )
);
rbiv = biv << Report; // 「二変量」レポートへの参照を戻す
out1 = rbiv["平均?"]; // 「二変量」レポート内の「平均のあてはめ」を見つける
out1 << Close( 0 ); // 「平均のあてはめ」のアウトラインを開く
ディスプレイボックスを見つけるもう一つの方法は、添え字演算子にディスプレイボックスとワイルドカード文字列を含めることです。
var = rbiv[Display Box( "?text" )];
この式は、rbivレポート内で指定の文字列を含むアウトラインボックスを見つけます。out1変数は、アウトラインボックスに参照を割り当てます。
out1 = rbiv[Outline Box( "平均?" )];
ディスプレイボックスを見つける別の方法としては、ボックスの種類(boxType)に対する通し番号nを指定する方法があります。
rpt[boxType ( n )];
上の式は、ボックスの種類がboxTypeであるディスプレイボックスのうち、n番目のものを見つけます。たとえば、この式は、rbivレポート内の最初のアウトラインボックスを見つけ、それをout1変数に割り当てます。
out1 = rbiv[Outline Box( 1 )];
ディスプレイボックスの個数が変わる可能性があるため、この方法はJMPのバージョンが変わったときの信頼性が低くなります。
ヒント: ディスプレイボックスの通し番号を知るには、ディスプレイツリーの表示で説明している方法でツリー構造を表示します。
レポートにおいて階層の下のほうに表示されているディスプレイボックスを参照するには、次のような指定を行えます。
var = rpt[arg1][arg2][arg3][...];
上の式は、最後の引数を、最後から2番目の添え字のアウトラインノードに含まれているディスプレイボックスで探し出します。この指定では、アウトラインツリーの階層を徐々に下がりながら入れ子になっているディスプレイボックスを探していきます。
アウトラインボックス内で複数の層になっている項目を識別するには、上記のように複数の添え字を指定します。JMPは、最初の項目を見つけた後、その項目内で次の項目を順次探していきます。
rpt[arg1][arg2][arg3] // 最初の項目を見つけ、その後、その位置から始めていく
rpt[arg1, arg2, arg3] // 構文は異なるが、結果は同じ
この添え字には、テキスト(タイトルやラベルの文字列)を指定することも、通し番号(整数)を指定することもできます。下の式は、「多項式のあてはめ次数=4」のアウトラインノード内にある「パラメータ推定値」を見つけ、最初の表にある3番目のディスプレイボックスを選択します。
out = rbiv["多項式のあてはめ次数=4"]["パラメータ推定値"][1][3] << Select;
レポートの作成例は、レポートからパラメータ推定値を抽出する方法を示します。
JMPのリリースによって、ディスプレイボックスがレポートに追加されたり、削除されたりするため、ディスプレイボックスに対する通し番号が変わってしまうことがあります。文字列を使用してボックスを特定し、その後に添え字を付けて子のボックスを特定すると、リリースが変わった場合でも信頼性が高くなり、リリース間の変更の影響を受けにくくなります。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
rp = dt << Bivariate(
Y( :"体重(ポンド)"n ),
X( :"身長(インチ)"n ),
Fit Line( {Line Color( {213, 72, 87} )} )
);
Print(
"全体(修正済み)の自由度=",
// 文字列は親ボックスを参照
Report( rp )[Outline Box( "分散分析" )][
Number Col Box( 1 )][3] // 添え字で子ボックスを参照
);
図11.7 添え字の付いたディスプレイボックス
前の例で示した添え字の番号は、名前で参照したボックスの中での相対的な番号であるため、リリースごとに変更されることはあまりありません。しかしながら、これは「ツリー構造の表示」で表示される絶対的な番号がそのまま使用できないことも意味しています。