行の状態のマーカーと色を含む強制凡例こんにちは、
マーカーと色を使用して凡例を作成しようとしていますが、それらを選択したいと考えています。 行の状態(色の状態、マーカーの状態、結合状態)のおかげで簡単だと思いました。 しかし、色とマーカーが各行に割り当てられると、それらを凡例に強制する方法が見つかりません。
スクリプトで実行したいのですが(凡例を含むボックスを追加しようと考えていました)、作成した「マーカー」を処理する方法が見つかりません。
ありがとう
Re: マーカーと行状態の色を使用した強制凡例ありがとうイアン、
これは私の最初のアイデアに近く、スクリプトに簡単に統合できます。
したがって、他の解決策はうまく機能しますが、私はこの解決策を少し好みます。
Re: マーカーと行状態の色を使用した強制凡例スクリプトでそれを行う方法はわかりませんが、[行]>[色]または[列でマーク]に移動すると
次のものが得られます

ここで、凡例を右クリックして任意に変更できます。「凡例を含むウィンドウを作成」を選択している場合は、凡例が作成されます。 これには、凡例で選択したものをテーブル内で選択できるという追加の利点もあります。
以下を使用して、スクリプト内で同じことを行うことができます。
Names Default to here(1);
dt = Open("$SAMPLE_DATA\Big CLass.jmp");
legend = dt << Marker By Column(:age);
new window("Not Really",
Hlistbox(
bivariate(Y(:height), X(:weight)),
legend
)
)
しかし、あなたが望んでいたカスタマイズ性は失われます(少なくとも私はそれを行う方法を見つけていません)
Re: マーカーと行状態の色を使用した強制凡例代わりに、「MarkerSeg」の使用を検討することもできます。 以下のコードの「dt」は、色を付けてマークする列のすべての個別レベルのテーブルです。 「表 > 概要」を使用して、これを非表示にすることができます。
NamesDefaultToHere(1);
// Example data table (markers and colors assigned by 'Lot ID')
dt = New Table( "Rows With Colors and Markers",
Add Rows( 12 ),
New Column( "Lot ID",
Character,
"Nominal",
Set Values(
{"lot1", "lot10", "lot11", "lot12", "lot13", "lot2", "lot3", "lot4",
"lot5", "lot6", "lot7", "lot8"}
),
Lock( 1 )
),
Set Row States(
[896.813481688499, 1104.17848521471, 34064.2516910434, 1584.79095828533,
1856.1745531559, 34848.5869575739, 35120.7292968035, 2704.17450988293,
2976.75480300188, 3200.51829791069, 3408.21706777811, 36368.77437675]
)
);
// Make legend window with MarkerSeg
n = NRow(dt);
xx = J(n, 1, 1);
yy = Transpose(1::n);
legendList = Column(dt, "Lot ID") << getValues;
gb = Graph Box(
FrameSize( 150, 300*(n/16) ),
Y Scale( 0, n+1 ),
X Scale( 0, 6 ),
Y Name(" "),
X Name(" "),
Y Axis(ShowLabels(0), ShowMajorTicks(0), ShowMinorTicks(0)),
X Axis(ShowLabels(0), ShowMajorTicks(0), ShowMinorTicks(0)),
Marker Seg( xx, yy, Row States( dt ) ),
For( i = 1, i<=n, i++, Text( {1.5, i-0.1}, legendList[i] ) )
);
db = PanelBox("Row State Colours and Markers for 'Lot ID'", gb);
New Window( "My Legend", db);
Re: マーカーと行状態の色を使用した強制凡例それは良い解決策のようです。 今、それを私のケースに適応させる必要があります。 どうもありがとう!
列の状態にはがっかりしました!
Re: マーカーと行状態の色を使用した強制凡例見てみると
ヘルプ==>スクリプトインデックス
グラフ ビルダーと凡例 Box() 要素の両方を確認すると、グラフ ビルダーの実行後の凡例の操作が制限されます。 ただし、何にでも使えるテクニックを使用できますが、少し面倒です。 グラフ ビルダーに必要な動作をさせるために必要なコードを含むリテラル文字列を生成すると、そのリテラル文字列を実行できます。 以下は非常に原始的な例ですが、これを使ってどのようなことができるかがわかると思います。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
Summarize( dt, groups = by( dt:sex ) );
numofgroups = N Items( groups );
TheCode =
"Graph Builder(
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 1 ) ) ),
SendToReport(
Dispatch(
{},
\!"400\!",
ScaleBox,
{Legend Model(
1,";
For( i = 0, i <= numofgroups - 1, i++,
Show( i );
TheCode = TheCode || "Properties(" || Char( i ) || ", {Line Color (" || Char( i + 3 ) || "),Marker( " || Char( 16 - i ) || ")}),";
);
TheCode = TheCode || "Dispatch( {}, \!"400\!", LegendBox, {Legend Position( {1, [2, 3], 1, [0, 1]} ), Position( {2, 3, 0, 1} )} ))';";
Eval( Parse( TheCode ) );Re: マーカーと行状態の色を使用した強制凡例ありがとうジム
1. それは本当の問題ではないことに同意します... ちょっとした工夫でリストが手に入る!
2. 十分に理解できていなかったかもしれません。 あなたが言ったように、凡例で変更が必要な項目の数 (N) を簡単に取得できます。 これは、グラフビルダーを作成するスクリプトに N 行を作成する必要があることを意味します (「legend box(properties(0...N)」で N 行をディスパッチする必要があります)。 ただし、凡例ボックスに N+1 行を含むグラフを作成すると、部分的には機能します (N+1 行は変更されません)。 したがって、グラフビルダーを作成するスクリプト内(実行可能ですか?)、またはグラフビルダーを作成するスクリプトの後にループを作成する必要があります(それはより合理的ですが、レジェンドボックスに送信できるメッセージが見つかりません) 。
Re: マーカーと行状態の色を使用した強制凡例1. 以下の表に示すように、マーカーには番号が付けられています。 スクリプト ガイドで説明されているように、これはスクリプトによって生成されました。
ヘルプ==>書籍==>スクリプトガイド

一部のマーカーには名前が割り当てられています。これは、グラフ ビルダー スクリプトで確認したとおりです。 これらの名前のリストは知りませんが、いつでも対話的にグラフ ビルダーを実行して必要なマーカーを割り当て、生成されたスクリプトを表示して、番号だけでなく名前が表示されるかどうかを確認できます。
2. 値の順序または行順序レベルがオンになっていない限り、凡例はアルファベット順または数値順にリストされます。 プログラム的にそれを判断し、コードを調整できます。 データテーブル内の年齢を調べる限り、私が最もよく使うのは Summarize() 関数です。
summary(dt,bygroup = By(:Age));
変数「bygroup」には、見つかったさまざまな年齢すべてのリストが含まれます。
N 項目 (グループごと);
見つかったさまざまな年齢の数を表示します
Re: マーカーと行状態の色を使用した強制凡例素早い回答ありがとうございます。
1/ マーカー名の完全なセットがあれば機能します (ドキュメントで標準の JMP カラーを見つけました)。 マーカー名に相当するものがどこで見つかるかご存知ですか?
2/ この場合、色とマーカーが専用のテーブルに書き込まれていれば、(eval(substitute(expr(graphbuilder(color1,marker1),expr(color1),mycolor, expr(マーカー1)、私のマーカー)))。 これは機能し、素晴らしい前進ですが、置換を行うには凡例内の項目の数を知る必要があります。
「ビッグクラス」ファイルについてより明確にするために、オーバーレイが :AGE で作成されている場合、ファイル内の AGE がわからない場合はどうすればよいでしょうか?
メッセージを凡例ボックスに送信できれば、(グラフ ビルダーの後の) ループで実行できるかもしれません。 しかし、項目を変更するメッセージがドキュメントに見つかりません...そして最後に、レジェンドボックスノードのツリーノードが「空」になっています。
Re: マーカーと行状態の色を使用した強制凡例JMP でこれを処理するために私が見つけた最も簡単な方法は、行の状態と一致するように凡例、つまり JSL を使用してグラフを変更することです。 以下は、グラフ ビルダーで凡例を変更する方法を示すスクリプトです。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
Graph Builder(
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 1 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
1,
Properties( 0, {Marker( "FilledTall" )} ),
Properties( 1, {Line Color( 1 ), Line Style( "Dashed" ), Marker( "Filled Diamond" )} )
), Legend Model(
1,
Properties( 0, {Marker( "FilledTall" )} ),
Properties( 1, {Line Color( 1 ), Line Style( "Dashed" ), Marker( "Filled Diamond" )} )
)}
),
Dispatch( {}, "400", LegendBox, {Legend Position( {1, [2, 3], 1, [0, 1]} ), Position( {2, 3, 0, 1} )} )
)
);
それは以下を生成します
