こんにちは。私は JMP を使い始めたばかりで、二変量プロット プラットフォームを使用してデータセットから二変量プロットのリストを生成しています。以下に示すように、すべてのプロットに同一の軸と凡例設定を追加するために、自動生成された JSL スクリプトを使い始めました。
Bivariate(
Y( :PeakValue ),
X( :"Duration (s)"n ),
By( :Checker Name ),
SendToReport(
Dispatch(
{},
"Duration (s)",
ScaleBox,
{Scale( "Log" ), Format( "Engineering SI", 9 ), Min( 0.0000000001 ),
Max( 0.001 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row(
{Show Major Grid( 1 ), Show Minor Grid( 1 ), Show Minor Labels( 0 )}
)}
),
Dispatch( {}, "PeakValue", ScaleBox, {Label Row( Show Major Grid( 1 ) )} ),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Marker Drawing Mode( "Normal" ),
Row Legend(
Corner,
Color( 1 ),
Color Theme( "JMP Default"(1) ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
上でご覧のとおり、データセットを :Checker Name 列でグループ化しています。ただし、このスクリプトを拡張して、透明な Rect() グラフィック オブジェクトも追加し、各散布図に許容範囲を作成したいと考えました。ただし、これらの Rect() オブジェクトの寸法と位置は、プロットされている二変量プロットによって異なります。つまり、セット内の二変量プロットに応じて正しく適用される Rect サイズ設定変数に :Checker Name のキーを作成する必要があります。これは、上記の事前に生成されたスクリプトに組み込むのが簡単/妥当なものでしょうか?
ありがとう!
JMP でインタラクティブに実行してみることもできます (各散布図に Rect() 値をハードコードする必要がある可能性が高いです)。ループ付きの JSL を使用することをお勧めします。
By( :Checker Name ) を使用した Bivariate 関数を、一意の Checker Name を持つ Bivariate のループに分割するにはどうすればよいでしょうか?
-ジェイコブ
参照のリストを変数に保存します: biv = Bivariate( ... )。リストを反復処理できます。アウトライン ボックスをクエリして By 変数レベルを決定するか、Summarize() 関数を使用してグループのリストを取得します。順序は同じになります。
連想配列を使用して、Checker Name 列の各キーに rect オブジェクトを割り当てることを検討しています。アウトライン ボックスのリストを反復処理し、それぞれに rect() オブジェクトを追加する例を示してもらえますか? また、Summarize 関数についてもよくわかりません。
JMP18 を使用していると思います。By を使用すると、プラットフォームのリストが返され、それをループすることができます。その後は、タイトルなどを取得する方法を考えるだけです (または、Summarize を使用することもできます。その場合は、少し異なる方法で参照リストを作成します)。ループを理解するのが難しい場合は、最初に単一の 2 変量プラットフォームを作成して動作させてから、ループに拡張することができます。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
aa_rect = Associative Array();
aa_rect["M"] = Expr(Rect(80, 60, 120, 55));
aa_rect["F"] = Expr(Rect(90, 65, 140, 55));
bivs = dt << Bivariate(Y(:height), X(:weight), By(:sex));
For Each({cur_biv}, bivs,
ob = Report(cur_biv)[OutlineBox(1)];
obtitle = ob << get title;
show(obtitle);
category = Word(-1, obtitle, "=");
fb = ob[FrameBox(1)];
Eval(EvalExpr(
fb << Add Graphics Script(
Pen Color("Blue");
Pen Size(2);
Expr(aa_rect[category]);
)
));
);
