結果は、プラットフォームを起動すると、結果は2種類のオブジェクトになります。1つは、ディスプレイボックスで構成されたレポートであり、もう1つは、プラットフォームと呼ばれ、コマンド(またはメッセージ)を受け入れる非表示のオブジェクトです。
プラットフォームに送るメッセージの1つに、Reportメッセージがあります。Reportメッセージは、プラットフォームから、レポート内のディスプレイボックスの参照を作成します。
レポートの冒頭にある赤い三角ボタンのメニューは、プラットフォームオブジェクトにつながっており、このメニューを使うと対話式にメッセージをプラットフォームに送れます。
次の例は、「二変量」プラットフォームで平均をあてはめるには、プラットフォームに参照を割り当てています。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( // bivは分析レイヤーを参照
X( :Name("身長(インチ)") ),
Y( :Name("体重(ポンド)") ),
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( :Name("体重(ポンド)") ),
X( :Name("身長(インチ)") ),
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(:Name("体重(ポンド)") ), X(:Name("身長(インチ)") ) );
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( :Name("体重(ポンド)") ),
X( :Name("身長(インチ)") ),
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[Display Box ( n )];
上の式は、タイプがboxTypeである指定のディスプレイボックスのうち、n番目のものを見つけます。たとえば、この式は、rbivレポート内の最初のアウトラインボックスを見つけ、それをout1変数に割り当てます。
out1 = rbiv[Outline Box( 1 )];
ディスプレイボックスの数が変わる可能性があるため、この方法はリリースが変わったときの信頼性が低くなります。
ヒント: ディスプレイボックスのインデックス番号を特定するには、ディスプレイツリーの表示で説明している方法でツリー構造を表示します。
レポート内で階層の下のほうに表示されるディスプレイボックスを参照するには、この形式を使用できます。
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( :Name("体重(ポンド)") ),
X( :Name("身長(インチ)") ),
Fit Line( {Line Color( {213, 72, 87} )} )
);
Print(
"全体(修正済み)の自由度=",
// 文字列は親ボックスを参照
Report( rp )[Outline Box( "分散分析" )][
Number Col Box( 1 )][3] // 添え字で子ボックスを参照す
);
図11.7 添え字の付いたディスプレイボックス
前の例で示した添え字の番号は、名前で参照したボックスの中での相対的な番号であるため、リリースごとに変更されることはあまりありません。しかしながら、これは「ツリー構造の表示」で表示される絶対的な番号がそのまま使用できないことも意味しています。