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

私がやりたいのは、彼のオリジナルのグラフビルダープロットを取得し、凡例からマーカーのスタイルと色を抽出し、それらを dt プロパティとして設定することです。 その目的は、ユーザーがツールバーのホット ボタンとして少しの JSL コードを実行して、データのマーカーと色を修正できるようにすることです。 これが必要な理由は、グラフ ビルダー内で、ユーザーがデータ フィルターを使用して地域を変更するたびに、各地域内で顧客の数が変化するため、顧客のセットの色分けとマーカーが変化するためです。 たとえば、これをデータ列の固定プロパティとして保持したいと考えています。
ツリー構造内の LegendBox(1) から情報を取得しようとして、次のような JSL コードを少し試してみましたが、次の行の結果として null が返されます。
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 = {"円"、"プラス"、"ダイヤモンド"、"X"、"三角形"、"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 、
フィードバックをお寄せいただきありがとうございます。 残念ながら、それは私がやりたいこととはまったく異なります。 ユーザーは実際には行の状態やマーカーを変更しておらず、グラフ ビルダーに自動的に変更させています。 ただし、変更が加えられるたびに、色とマーカーは JMP のデフォルトに従って変わります。 グラフ ビルダーが自動的に行うマーカーと色の「設定」を抽出し、それを dt に適用して、グラフ ビルダーに変更が加えられたときに修正され、更新されないようにしたいと考えています。 ユーザーが簡単にできるように、これを自動的に実行したいと考えています。
これは MarkerSeg と <<
私は今、それを読んで、以下の変更されたコードを使用して、Scripting Index の例を変更しようとしています。
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>
しかし、実行すると、マーカーセグメントに対して次の出力が得られます: {"Dot", "Dot", "Dot", "Dot", "Dot", "Dot", "Dot", "Dot"}
元の投稿に含めた図によると、各データ ポイントは「ドット」ではありません。
ありがとう!、
DS
Re: 凡例ボックスの色やマーカーの種類などの情報を取得する方法こんにちは@SDF1 、
問題を正しく理解できた場合は、行の状態を確認してみるとよいでしょう。
<< copy from row states
そして
<< copy to row states
行の状態情報 (色、マーカーなど) を別の列に転送し、再び行の状態に戻すことができます (例と構文はスクリプト インデックスにあります)。
br
マルテ