やあ。 グラフビルダーで軸に表示された値を読み取り、それらをリストとして返すスクリプト方法があることを知りたいと思っています。 IOW、グラフビルダーの参照または軸ボックスから軸の値を「取得」できる関数またはメッセージはありますか? 次のようなもの: xval_lis = gb << X 軸の値を取得します。
たとえば、次のグラフがあるとします。

dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = Graph Builder(
Size(513, 406),
Show Control Panel(0),
Back Color("White"),
Variables(X(:age), X(:sex, Position(1)), Y(:weight)),
Elements(Points(X(1), Y, Legend(1)), Smoother(X(1), Y, Legend(2))),
Local Data Filter(
Add Filter(
columns(:age),
Where(:age == {12, 13, 14}),
Display(:age, Size(170, 96), List Display)
)
),
SendToReport(Dispatch({}, "", AxisBox, {Select}))
)ここでは、ユーザーがローカル データ フィルターを使用して特定の年齢を除外しているため、テーブル内のすべての年齢が x 軸に表示されているわけではありません。 この場合、グラフに実際に表示されている年齢を読み取る方法が必要です。 この質問は、名義型または序数型の変数が軸に使用されている場合にのみ適用されます (連続変数は使用されません)。
次のスクリプト方法を検討しました。
1. ローカル データ フィルターを読み取る
2. フィルタリングされていない行だけのサブセット テーブルを作成します。
3. そのテーブルで Summarize 関数を使用して、表示されている軸の値のリストを取得します。
ldf_str = ldf << Get Where Clause; //ldf = reference to local data filter in gb window
clause = Parse(Regex(ldf_str, "Select Where\((.+)\)$", "\1"));
r = dt << Get Rows Where(Eval(clause)); //dt = ref to main datable
dtsub = dt << Subset(//Invisible,
Selected Rows(0),
Rows(r),
Selected columns only(0)
);
Summarize(dtsub, xlev_lis = By(:age, :sex));
ただし、この方法は扱いにくいようです。 グラフビルダー参照または軸ボックスから軸の値を「取得」できるコマンドはありますか?
@ニクルズ、
ユーザー シナリオは不明ですが、ユーザーがアクティブにフィルタリングしている場合、GraphBuilder 構造やさまざまなロールなどを変更することもできます。フィルタ変更ハンドラより堅牢になります。 また、Where Clause() は Inverse をキャプチャしないことに注意してください。 スクリプトと Where の TextBox は、反転を Not (!) としてキャプチャします。

以下に添付されているのは、フィルターが変更されたときに Xticks を取得してログに出力するスクリプトです。以下は、コメント (//) と余分な改行を含む埋め込みログのスクリーン ショットです。

Names Default to Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = Graph Builder(
Size(513, 406),
Show Control Panel(0),
Back Color("White"),
Variables(X(:age), X(:sex, Position(1)), Y(:weight)),
Elements(Points(X(1), Y, Legend(1)), Smoother(X(1), Y, Legend(2))),
Local Data Filter(
Add Filter(
columns(:age),
Where(:age == {12, 13, 14}),
Display(:age, Size(170, 96), List Display)
)
),
SendToReport(Dispatch({}, "", AxisBox, {Select}))
);
//iftb = (report(gb)[PictureBox(1)]<<SIB></SIB>
ノート:
- 20 行目はコメントです。 Where TextBox へのハンドルを取得する方法を示します。
- Filter Change Handler に使用される関数 f の主な機能は、連想配列の JMP 実装の機能です。それを定義するための複数のメソッド。リスト内の一意の値を取得します。ほとんどすべての JMP オブジェクトをキーとして使用できます。
- その他の重要な機能は次のとおりです。dt[ zz, _xvar_] は行の値のリストであり、ldf << はフィルターされた行を取得します。