複数の二変量プロットにコマンドを送信するLineUpBox を使用して各プロットを含め、単一ウィンドウ内に一連の二変量プロットを生成するスクリプトがあります。プロットが作成された後、ユーザーがプロットのポイントのオン/オフを切り替えるオプションが必要です (他のオプションを追加するつもりです...これは一例としてのみ機能します)。ユーザーがクリックできるウィンドウ内のボタンボックスまたはチェックボックスを想像すると、すべてのプロットにこのアクションが反映されます。
単一のプロットの場合は、次のコマンドを使用します。
bvp << Show Points(0/1);
ここで、bvp は二変量プロットへの参照です。ただし、ここでは複数のプロットがあるため、それらすべてに対して 1 つの参照を使用することはできません。代わりに、プロットを含む LineUpBox を参照してみました。
For(plid = 1, plid <= nplots, plid++,
LUB_plots[plid] << Show Points(pts)
)
ここで、LUB_plots は私のラインナップボックスへの参照です。このループは、たとえばユーザーがチェックボックスをチェックするたびに実行されます。これを実行すると、次のエラーが発生します。
The display box 'OutlineBox' does not recognize the message 'Show Points'; perhaps you mean one of these: <<Show Properties <<Show HelpKeys <<SetHorizontal <<Horizontal <<SetOpen <<GetHorizontal <<Close Where No Outlines <<Font <<Set Font <<Set Font Style <<Set Font Size <<Reshow <<Set Report Title <<Set Window Title <<Top Parent <<Show Tree Structure <<Restore Window Size <<Set Window Size <<Set Content Size <<Get Window Position <<Show Window <<Get Show Window <<Set Window Title <<Set Window Icon <<Set Print Headers <<Set Print Footers <<Scroll Window <<Set Width <<Set Height <<Horizontal Alignment.
各プロットには次のインスタンスがあります。
(The following message might not be an actual error; the preference 'Report Invalid Display Box Messages' is ON.) The display box 'OutlineBox' does not recognize the message 'Show Points'.
ツリー構造をチェックして、はい、一番上の表示ボックスが確かにアウトライン ボックスであることを確認しました。したがって、少なくとも LineUpBox[plid] が私が期待していた方向を目指していることはわかります。問題は、私の <
私の質問: 複数の二変量プロットを参照するにはどうすればよいですか?あるいは、作成後に複数の二変量プロットにコマンドを送信するより良い方法はありますか?おそらく、ある種の Dispatch/SendtoReports コマンド構造を使用しているのでしょうか?
これをコミュニティで検索する方法さえわかりません。助けていただければ幸いです。
Re: 複数の二変量プロットにコマンドを送信する再度、感謝します。エレガント。
Re: 複数の二変量プロットにコマンドを送信するこの構文は機能するようです:
y_axes = (lub << xpath("//AxisBox[@charID='2']"));
y_axes << scale(Log);
xpath のドキュメントについては、たとえばを参照してください。 XPath に関する w3schools チュートリアル
Re: 複数の二変量プロットにコマンドを送信するありがとう!xpath cmd は、ショー ポイントの例ではうまく機能します。
今、フォローアップがあります。Y 軸を線形から対数に変更するコマンドをすべてのプロットに送信するにはどうすればよいですか?まず、すべての y 軸ボックスへのすべての参照のリストを作成する目的で、xpath コマンドを使用してみました。まず、xpath コマンドが正しい参照を取得していることを確認しようとしています。しかし、それらの箱だけを返してもらうことはできないようです。ログ内の XML コードを調べると、y 軸のボックスがすべて「charID=\!"2\!"」であることがわかりました。そのため、それを使用して y と x を区別しようとしていますが、そうではありません。ラック。
Names Default To Here(1);
//Example report
Open("$SAMPLE_DATA/Big Class.jmp");
Try(Window("example") << Close Window);
nw = New Window("example",
lub = Lineup Box(
Bivariate(Y(:weight), X(:height), FitLine()),
Bivariate(Y(:weight), X(:age), FitLine()),
Bivariate(Y(:age), X(:age), FitLine()),
Bivariate(Y(:weight), X(:weight), FitLine())
)
);
Show(lub << Get xml);
Show(lub << xpath("//AxisBox")); //list of 8 displayboxes
Show(lub << xpath("//AxisBox[2]")); //empty list
Show(lub << xpath("//AxisBox['2']")); //list of 8 displayboxes
Show(lub << xpath("//AxisBox[\!"2\!"]")); //list of 8 displayboxes
Show(lub << xpath("//AxisBox[charID=\!"2\!"]")); //empty list
Show(lub << xpath("//AxisBox[\!"charID=2\!"]")); //list of 8 displayboxesxpath が 4 つの y 軸ボックスだけを返すようにするにはどうすればよいですか?
必要な特定の軸ボックスへの参照の生成に成功したら、前の例と同様に「Get Scriptable Object」コマンドを送信する必要がありますか、それとも「Scale」コマンドを参照リストに直接送信するだけでよいでしょうか。
JMP Summit のプレゼンテーションと、提供していただいた .jsl コード サンプルを読みました。非常に役に立ちました。ただし、スクリプト インデックスには追加のドキュメントが少なく、スクリプト ガイドには存在しないようです。xpath で利用可能なドキュメントは他にもありますか?入力の形式を知りたいです。たとえば、先頭の「//」は何をするのでしょうか?また、必要なディスプレイボックスを取得するには、残りの入力をどのようにフォーマットすればよいでしょうか?
ありがとう。
Re: 複数の二変量プロットにコマンドを送信するまたは、もっと簡単にxpath 、投稿されたばかりの JMP サミットのプレゼンテーションからインスピレーションを得たものここ:
Names Default To Here(1);
//Example report
Open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("example",
lub = Lineup Box(
Bivariate(Y(:weight), X(:height), FitLine()),
Bivariate(Y(:weight), X(:age), FitLine()),
Bivariate(Y(:age), X(:age), FitLine()),
Bivariate(Y(:weight), X(:weight), FitLine())
)
);
//Make list of plots
L = (lub << xpath("//LineUpBox/OutlineBox")) << get scriptable object;
// Send messages to all plots, e.g
L << show points(0);
Re: 複数の二変量プロットにコマンドを送信するのポイントを表示()にメッセージを送信する必要があります二変量上部の表示ボックスではなく、オブジェクトを表示します。 既存の表示ツリーから、関連するオブジェクトへの参照を次のように取得できます。 <<スクリプト可能なオブジェクトを取得。
複数のプロットにメッセージを送信する 1 つの方法も示す例:
Names Default To Here(1);
//Example report
Open("$SAMPLE_DATA/Big Class.jmp");
New Window("example",
lub = Lineup Box(
Bivariate(Y(:weight), X(:height), FitLine()),
Bivariate(Y(:weight), X(:age), FitLine()),
Bivariate(Y(:age), X(:age), FitLine()),
Bivariate(Y(:weight), X(:weight), FitLine())
)
);
//Make list of plots (here top-level Outline boxes)
L = {};
i = 1;
While(Is Scriptable(Try(lub[Outline Box(i)])),
If((lub[Outline Box(i)] << parent) << classname == "LineUpBox",
Insert Into(L, lub[Outline Box(i)] << get scriptable object)
);
i++;
);
// Send messages to all plots, e.g
L << show points(0);