インタラクティブな方法のほかにも、JSLを使ってグラフィック要素を追加することができます。
Frame Box <<Add Graphics Script(<order>, <"description">, script)
JSLで追加したグラフィック要素は、グラフの最前面にある要素の上に描画されます。
• オプションの順序(order)引数を使えば、グラフィック要素の描画順を指定できます。orderにはキーワードのBackまたはFront、または複数のグラフィック要素の描画順を整数で指定します。たとえば、散布図に楕円を追加すると、楕円はマーカーの上に描画されます。キーワードBack(または1)を使用した場合、楕円は一番後ろ(下)に描かれます。Front(または2)は、そのオブジェクトが最後に描画されることを意味します。
• オプションのDescription引数は、「グラフをカスタマイズ」ウィンドウでグラフィックスクリプトの隣に表示される項目名です。
複数のグラフィック要素の描画順を指定するには、order引数に整数を指定して、それらの描画順を相対的に指定します。次のスクリプトは、まず青い楕円を追加し、次にその手前に赤い楕円を追加します。どちらの楕円も、点の後ろに表示されます。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
op = dt << Bivariate(
X( :Name("身長(インチ)") ),
Y( :Name("体重(ポンド)") ),
);
Report( op )[Frame Box( 1 )] << Add Graphics Script(
1, // 青い楕円を描く
Description( "青い楕円" ),
Fill Color( "Blue" );
Oval( 60, 140, 65, 90, 1 );
);
Report( op )[Frame Box( 1 )] << Add Graphics Script(
2, // 青い楕円に重ねて赤い楕円を描く
Description( "赤い楕円" ),
Fill Color( "Red" );
Oval( 50, 120, 65, 100, 1 );
);
図12.3 描画順の指定
次のJSLコマンドを使って、フレームの内容や設定をコピーし、貼り付けることができます。
obj << Copy Frame Contents // グラフやあてはめ線などの内容
obj << Paste Frame Contents
obj << Copy Frame Settings // 背景色などの設定
obj << Paste Frame Settings
次の例は、2つの「二変量」グラフを作成し、最初のグラフにあてはめ線を追加し、その線をコピーして2番目のグラフに貼り付けます。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :Name("体重(ポンド)") ), X( :Name("身長(インチ)") ) );
rbiv1 = biv << Report; // レポートオブジェクトを作成
rbiv2 = rbiv1 << Clone Box; // 二変量グラフのコピーを作成
/* 二変量グラフの下にコピーしたボックスを配置して
2つ目の二変量グラフを作成 */
rbiv1 << Append( rbiv2 );
framebox1 = rbiv1[Frame Box( 1 )]; // レポートのフレームボックスに参照を割り当てる
framebox2 = rbiv2[Frame Box( 1 )];
biv << Fit Line; // 最初の二変量グラフに直線をあてはめる
// framebox1の内容をコピーする
framebox1 << Copy Frame Contents;
// フレームの内容をframebox2に貼り付ける
framebox2 << Paste Frame Contents;
図12.4 フレームの内容のコピーと貼り付け
次の例は、2つの二変量グラフを作成し、最初のグラフの背景を青に設定し、その背景の設定をコピーして2つ目のグラフにコピーします。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv1 = dt << Bivariate( Y( :Name("体重(ポンド)") ), X( :Name("身長(インチ)") ));
// 最初の二変量グラフを作成
rbiv1 = biv1 << Report; // レポートオブジェクトを作成
rbiv2 = rbiv1 << Clone Box; // 二変量グラフのコピーを作成
/* 二変量グラフの下にコピーしたボックスを配置して
2つ目の二変量グラフを作成 */
rbiv1 << Append( rbiv2 );
framebox1 = rbiv1[Frame Box( 1 )]; /* レポートのフレームボックスに
参照を割り当てる */
framebox2 = rbiv2[Frame Box( 1 )];
// 背景色をframebox1に割り当てる
framebox1 << Background Color( "Blue" );
// framebox1のフレーム設定をコピー
framebox1 << Copy Frame Settings;
// フレーム設定をframebox2に貼り付ける
framebox2 << Paste Frame Settings;
図12.5 背景のコピーと貼り付け
次の例では、2つのヒストグラムを作成し、2つ目のヒストグラムを最初のヒストグラムにコピーします。
プラットフォームでは、貼り付けた要素が保存されないため、グラフを再現するには同様のスクリプトを実行する必要があります。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dist = dt << Distribution(
SendToByGroup( {:性別 == "F"} ),
Nominal Distribution( Column( :年齢 ) ),
Histograms Only,
By( :性別 ),
SendToByGroup(
{:性別 == "M"},
SendToReport(
Dispatch(
{"一変量の分布 性別=M", "年齢"},
"Distrib Nom Hist",
FrameBox,
{DispatchSeg(
Hist Seg( 1 ),
// 男性のヒストグラムの色を設定
Fill Color( "Light Yellow" ),
)}
)
)
)
);
For( i = 2, i <= N Items( dist ), i++,
Report( dist[i] )[FrameBox( 1 )] << Copy Frame Contents;
// 2つ目のヒストグラムを最初のヒストグラムにコピー
Report( dist[1] )[FrameBox( 1 )] << Paste Frame Contents;
);
New Window( "一変量の分布", Outline Box( "年齢", Report( dist[1] )[Picture Box( 1 )] ) );
図12.6 貼り付けたヒストグラム
対話形式でフレーム設定をコピーして貼り付ける(ペーストする)には、次の手順を実行します。
1. グラフを右クリックし、[編集]>[フレーム設定のコピー]を選択します。
2. 設定を貼り付けたいフレームを右クリックし、[編集]>[フレーム設定の貼り付け]を選択します。
対話形式でフレームの内容をコピーして貼り付ける(ペーストする)には、次の手順を実行します。
1. グラフを右クリックし、[編集]>[フレームの内容のコピー]を選択します。
2. 内容を貼り付けたいフレームを右クリックし、[編集]>[フレーム内容の貼り付け]を選択します。