色やマーカータイプなどの凡例ボックス情報を取得する方法親愛なるJMPコミュニティ、
(W10 Enterprise 64ビット、JMP Pro 15.0)
グラフビルダーを使用して、複数ビットの情報を含むかなり複雑なグラフを生成しているユーザーがいます。 市場データは地域、顧客などによって分割されます。その結果、散布図は色分けされ、複数のマーカーがあります。 例として、以下はグラフがどのように見えるか(Big Class Families.jmpを使用)のようなものです。

私がやりたいのは、彼の元のグラフビルダーのプロットを取得し、凡例からマーカーのスタイルと色を抽出して、それらをdtプロパティとして設定することです。 目的は、ユーザーがツールバーのホットボタンとしてJSLコードを実行し、データのマーカーと色を修正できるようにすることです。 これが必要な理由は、グラフビルダー内から、ユーザーがデータフィルターを使用して地域を変更するたびに、各地域内で顧客の数が変わるため、一連の顧客の色分けとマーカーが変わるためです。 たとえば、これをデータ列の固定プロパティとして使用したいと考えています。
ツリー構造内のLegendBox(1)から情報を取得しようとして、このようなJSLコードを少し試しましたが、次の行の結果としてnullが返されます。test= legend << Get Property();
Names Default to here(1);
dt = Open("$Sample_Data/Big Class Families.jmp");
gb=dt<<GRAPH builder=""></GRAPH><BR />test = legend<<GET property=""></GET>色の情報がRGBなどである場合は、それで問題ありません。「青」や「赤」などの名前である必要はありません。
続行する方法についての提案は大歓迎です。
ありがとう、
DS
Re:色やマーカータイプなどの凡例ボックス情報を取得する方法やあ@MJE 、
追加のフィードバックをありがとう。 できます! 解決策をありがとう、私はそれをそのようにマークします。 ユーザーが求めているものに少し似るように少し変更しましたが、それ以外の場合は機能します。 私の知る限り、マーカーと色のリストは凡例と同じ順序です。
これが私が使用したコードの修正バージョンです:
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :age ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height)
);
segs = Report(gb)[Framebox(1)]<<FIND segs=""></FIND>
そして私が得る出力:
MarkerList = {"Circle"、 "Plus"、 "Diamond"、 "X"、 "Triangle"、 "Y"};
ColorList = {{66、112、221}、{212、73、88}、{61、174、70}、{162、43、221}、{204、121、41}、{40、182、143} };

ありがとう!、
DS
Re:色やマーカータイプなどの凡例ボックス情報を取得する方法たぶん、ここのこの部分はあなたを助けるかもしれません。 少なくとも、グラフ内のどの実際のデータポイントがどの色とマーカーを持っているかについての情報を提供します。 残念ながら、データポイント(またはマーカーセグメント)を実際の行番号に直接相関させる方法を見つけることができませんでした。 多分誰か他の人がそれを行う方法についてのアイデアを持っています...
「マーカーを取得」メッセージを「マーカーを取得」に置き換えて、このマーカーセグメント内で使用されているマーカーのリストを表示できます。 しかし、この状態ではすべて同じなので、読みやすくするために短く切りました。
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height)
);
//gb << show tree structure;//only for debugging and building the script
segs = Report( gb )[Framebox( 1 )] << Find Segs;
For ( i = 1, i <= n items (segs), i++,
seg = Report( gb )[Framebox( 1 )] << Find Seg( MarkerSeg(i) );
nx = seg << get x values;
ny = seg << get y values;
m = seg << get marker;
c = seg << get colors;
show (nx, ny, m, c);
);
お役に立てれば。
br
マルタ
Re:色やマーカータイプなどの凡例ボックス情報を取得する方法やあ@MJE 、
フィードバックをお寄せいただきありがとうございます。 残念ながら、それは私がやりたいことではありません。 ユーザーは実際には行の状態やマーカーを変更していません。GraphBuilderに自動的に変更させています。 ただし、変更が行われるたびに、JMPのデフォルトに従って色とマーカーが変更されます。 グラフビルダーが自動的に行うマーカーと色の「設定」を抽出し、それをdtに適用して、グラフビルダーに変更が加えられたときに修正されて更新されないようにします。 ユーザーが使いやすいように、これを自動的に実行したいと思います。
MarkerSegと<<
私は今それを読んでいて、以下の変更されたコードを使用して、スクリプトインデックスの例を変更しようとしています。
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height, Row States(dt))
);
gb << show tree structure;//only for debugging and building the script
lgnd = (gb << Report)[FrameBox(1)];
markerseg = (lgnd<<FIND seg=""></FIND>
しかし、それを実行すると、markersegに対して次の出力が得られます:{"Dot"、 "Dot"、 "Dot"、 "Dot"、 "Dot"、 "Dot"、 "Dot"、 "Dot"}
元の投稿に含めたグラフィックから、各データポイントは「ドット」ではありません。
ありがとう!、
DS
Re:色やマーカータイプなどの凡例ボックス情報を取得する方法やあ@ SDF1 、
問題を正しく理解している場合は、行の状態を確認することをお勧めします。
<< copy from row states
と
<< copy to row states
行の状態情報(色、マーカーなど)を別の列に転送し、再び行の状態に戻すことができます(例と構文はスクリプトインデックスにあります)。
br
マルタ