JSLのリストからグラフビルダーにY変数を渡す方法は?以下のサンプル スクリプトは、Y 軸にプロットする固定の少数のパラメーターに必要な処理を実行します。
上から Y に提供されるリストに対してこれを自動化するにはどうすればよいですか?
(X 変数/列は固定されたままですが、Y に送られる要素の数は変更される可能性があり、別のスクリプトから提供されます)
Names Default To Here (1);
Clear Log ();
dt = open("$sample_data\Big Class.jmp");
y_values = {"name", "age", "sex", "weight"};
Graph Builder(
Show Control Panel( 0 ),
Variables( X( :height),
Y( column(dt, y_values[1]) ),
Y( column(dt, y_values[2]) ),
Y( column(dt, y_values[3]) ),
Y( column(dt, y_values[4]) )
),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 1 ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 2 ) ) ),
Elements( Position( 1, 3 ), Points( X, Y, Legend( 3 ) ) ),
Elements( Position( 1, 4 ), Points( X, Y, Legend( 4 ) ) )
);また、この場合、Elements () はどのように処理されるのでしょうか。
自動化とスクリプト作成ウィンドウズRe: JSL のリストからグラフ ビルダーで Y 変数を渡すにはどうすればよいですか?@ほぎありがとう、Expr () 関数と Insert NameExpr () 関数をこれまで使ったことがないので、もう少し手を加える必要があると思います。 OPに追加したサンプルスクリプトの例を提供していただければ便利です。
Re: JSL のリストからグラフ ビルダーで Y 変数を渡すにはどうすればよいですか?これはこれを構築するだけのオプションではなく、いくつかのアイデアを与えることができます。 GraphBuilderbox の変数と要素のスクリプト インデックスも検索します
Names Default To Here(1);
dt = Open("$sample_data\Big Class.jmp");
y_values = {"name", "age", "sex", "weight"};
variables_expr = Expr(Variables(X(:height)));
For Each({y_col}, y_values,
temp_expr = Expr(Y());
Insert Into(temp_expr, Name Expr(AsColumn(dt, y_col)));
Insert Into(variables_expr, Name Expr(temp_expr));
);
gb_expr = Expr(Graph Builder(
Show Control Panel(0)
));
Insert Into(gb_expr, Name Expr(variables_expr));
For Each({y_col, idx}, y_values,
Eval(EvalExpr(
Insert Into(gb_expr,
Name Expr(Elements(Position(1, Expr(idx)), Points(X, Y, Legend(Expr(idx)))))
)
));
);
Show(Name Expr(gb_expr));
Eval(gb_expr);
編集:
Add Variable() を使用した例
Names Default To Here(1);
dt = Open("$sample_data\Big Class.jmp");
y_values = {"name", "age", "sex", "weight"};
variables_expr = Expr(Variables(X(:height)));
gb = dt << Graph Builder(
// Ignore Platform Preferences(1),
Show control Panel(0),
Variables(X(:height))
);
gb << inval;
For Each({y_col, idx}, y_values,
Eval(EvalExpr(
gb << Add Variable({Expr(Name Expr(As Column(dt, y_col))), Role("Y")})
));
// if you just want points, you shouldn't need this, but smoother idx is 2 instead of 1
/* gb << Remove Element(1, idx, 1);
Eval(EvalExpr(
gb << Add Element(1, Expr(idx), {Type("Points"), X, Y, Legend(Expr(idx))})
));
*/
);
gb << Update window;
gb << Remove Element(1, N Items(y_values), 2); // 1 or 2 for smoother idx, depending on how GB is builtRe: JSL のリストからグラフ ビルダーで Y 変数を渡すにはどうすればよいですか?@jthiありがとう。 これは私にとってはうまくいきますが、デフォルトのグラフのタイトルを変更することはできません。 JSL経由でこれを行うにはどうすればよいですか?
Re: JSL のリストからグラフ ビルダーで Y 変数を渡すにはどうすればよいですか?タイトルとして何を定義するかによって異なります。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = Graph Builder(
Variables(X(:height), Y(:weight)),
Elements(Points(X, Y), Smoother(X, Y))
);
gb << Title("Test");
また、これがグラフビルダー上のテキストエディットボックスであると考えられる場合は、手動で変更してから、JMPによって作成されたスクリプトを修正します。
SendToReport(Dispatch({}, "graph title", TextEditBox, {Set Text("asdsad")}))
JMP17 を持っていてプロパティを使用すると、さらに詳しい情報を取得できます。

それで、次のようなもの
Report(gb)[TextEditBox(1)] << Set Text("12313213");
あなたのレポートによっては機能するかもしれません
Re: JSL のリストからグラフ ビルダーで Y 変数を渡すにはどうすればよいですか?@jthiありがとう。 あなたが示した簡単なケースでは、(あなたが示したように)グラフのタイトルを付ける方法はわかりますが、以下のケースではどうすればよいですか?
Names Default To Here(1);
dt = Open("$sample_data\Big Class.jmp");
y_values = {"name", "age", "sex", "weight"};
variables_expr = Expr(Variables(X(:height)));
For Each({y_col}, y_values,
temp_expr = Expr(Y());
Insert Into(temp_expr, Name Expr(AsColumn(dt, y_col)));
Insert Into(variables_expr, Name Expr(temp_expr));
);
gb_expr = Expr(Graph Builder(
Show Control Panel(0)
));
Insert Into(gb_expr, Name Expr(variables_expr));
For Each({y_col, idx}, y_values,
Eval(EvalExpr(
Insert Into(gb_expr,
Name Expr(Elements(Position(1, Expr(idx)), Points(X, Y, Legend(Expr(idx)))))
)
));
);
Show(Name Expr(gb_expr));
Eval(gb_expr);Re: JSL のリストからグラフ ビルダーで Y 変数を渡すにはどうすればよいですか?グラフ ビルダーを参照すると、どちらのアイデアも機能するはずです。
Re: JSL のリストからグラフ ビルダーで Y 変数を渡すにはどうすればよいですか?@jthiありがとうございますが、Scripting Index に Get Reference () が表示されません (私は JMP 16.2.0 を使用しています)。 グラフビルダーウィンドウのウィンドウ名を取得するということでしょうか?
Re: JSL のリストからグラフ ビルダーで Y 変数を渡すにはどうすればよいですか?Current Report()[TextEditBox( 1 )] << set text( "NewTitle" );
これは私にとってはうまくいきます。
Re: JSL のリストからグラフ ビルダーで Y 変数を渡すにはどうすればよいですか?グラフを作成する式を評価するときに参照を取得することをお勧めします。 私は思う
gb = Eval(gb_expr);
機能するはずです。 また、複数のテーブルが開いている可能性がある場合は、グラフ ビルダーが dt を使用して作成されていることを確認するとよいでしょう。 この場合、テストせずにそれを実行する最も簡単な構文は何であるかはわかりませんが、
Re: JSL のリストからグラフ ビルダーで Y 変数を渡すにはどうすればよいですか?式に対してシンボル var と gb を生成できます。
Var= Expr(variables(x(:height)))
gb =Expr(Graph Builder())
そして使用します挿入するでのためにループして var に Ys を入力し、挿入しますNameExpr(var)の中へギガバイトそして別のものを使用しますのためにループして要素式を追加します。