JSLを使用したグラフビルダーの凡例項目の非表示JSL のグラフ ビルダーで厄介な問題が発生しています。散布図でポイントとスムーザーの両方を表示するために、ポイントの透明度を変更しています。これは十分に機能しますが、後で JSL でプロットを操作すると、ポイントは非表示のままではなく、デフォルトで凡例に追加されて戻ってきます。これは、JMP がポイントが冗長でないと判断したためだと思います。グラフビルダーで表示したくない項目のチェックを手動で解除できることは知っていますが、JSLでこれを行う方法はありますか?


Re: JSL を使用してグラフ ビルダーで凡例項目を非表示にするそしてありがとう@anne_sa 。あなたの情報は私を正しい方向に導きました。
Re: JSL を使用してグラフ ビルダーで凡例項目を非表示にするありがとう@txnelsonそして@jjswan33あなたの答えのために!
私のスクリプトと一致させるために少し調整する必要がありますが、うまくいくと思います。
再度、感謝します :)
Re: JSL を使用してグラフ ビルダーで凡例項目を非表示にする私の見解では、ジムの強引な方法よりもクリーンな代替ソリューションを見つけました。
代わりに、関数の先頭で 2 つのリストを定義しています。
p = {};
l = {};
summarize(unique_values=by(OverlayCol));
NSplits = N Items (unique_values);
For(i=0, i < NSplits, i+=1,
p = Insert(p, -1);
l = Insert(l, i);
);
pl = Insert(p, l);点と線(私の場合)の凡例項目に必要な 2 つのリストを作成し、それらのリストを次のようにグラフ ビルダー ディスパッチに行列として渡します。
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {3, Matrix(p), 9, Matrix(l)} ),
Position( Matrix(pl))}
)更新された機能のフルバージョン:
RadPlotCreator1XGroupTest = Function({dt, XCol, YCol, OverlayCol, GroupXCol}, {Default Local},
p = {};
l = {};
summarize(unique_values=by(OverlayCol));
NSplits = N Items (unique_values);
For(i=0, i < NSplits, i+=1,
p = Insert(p, -1);
l = Insert(l, i);
);
pl = Insert(p, l);
gb = dt << Graph Builder(
Size( 849, 622 ),
Fit to Window( "Off" ),
Show Control Panel(0),
Grid Color( "Black" ),
Variables(
X( XCol ),
Y( YCol ),
Group X( GroupXCol ),
Overlay( OverlayCol )
),
Elements(Points(X, Y, Legend(3)), Smoother( X, Y, Legend( 9 ) )),
SendToReport(
Dispatch(
{},
"",
ScaleBox,
{}
),
Dispatch(
{},
"",
ScaleBox,
{}
),
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {3, Matrix(p), 9, Matrix(l)} ),
Position( Matrix(pl))}
)
)
);
sb = report(gb)[ScaleBox(5)];
For(i=0, i < NSplits, i+=1,
sb << Legend Model(3, Properties(i, {Transparency(0.2)}));
);
frame_list = gb << xpath("//FrameBox");
num_frames = N Items (frame_list);
For(i=1, i <= num_frames, i+=1,
Report(gb)[Framebox(i)] << Background Color(White);
Report(gb)[Framebox(i)] << Grid Line Order( Back );
Report(gb)[Framebox(i)] << Reference Line Order( Back );
Report(gb)[Framebox(i)] << Frame Size(250, 250);
Report(gb)[Framebox(i)] << X Axis(0, 150, Inc(20), Minor Ticks(1),
Add Ref Line( 70, Solid, "Black", "", 2 ),
Add Ref Line( 120, Solid, "Black", "", 2 ),
Add Ref Line( 135, Solid, "Black", "", 2 ), Show Major Grid( 1 ));
Report(gb)[Framebox(i)] << Y Axis(Minor Ticks(1));
);
gbp = Report( gb );
img = gbp << getpicture();
return(img);
);
Re: JSL を使用してグラフ ビルダーで凡例項目を非表示にするこの種の問題を解決するために私が使用する強引な方法は次のとおりです。必要な JSL コードをビルドし、作成した JSL を実行するだけです。 私が使用した Big Class データ テーブルでは、18 歳という追加の年齢グループを追加したことに注意してください。
Names Default To Here( 1 );
dt = Current Data Table();
// Find the number of Age groups
Summarize( dt, ageGroups = by( :age ) );
// Build the JSL
theExpr =
"Graph Builder(
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Points( X, Y, Legend( 6 ) ), Box Plot( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
\!"400\!",
LegendBox,
{Legend Position(
{6, [ -1";
For( i = 2, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", -1"
);
theExpr = theExpr || "], 7, [0";
For( i = 1, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", " || Char( i )
);
theExpr = theExpr || ", -3]}
), Position( {-1";
For( i = 2, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", -1"
);
For( i = 0, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", " || Char( i )
);
theExpr = theExpr || ", -3]} ) } )));";
// Execute the JSL string
eval(parse(theExpr));

Re: JSL を使用してグラフ ビルダーで凡例項目を非表示にするおっと、コピー/ペーストが間違っていて、混乱させて申し訳ありませんでした。
(JMP15を使用して)やり直してみましょう!
まず、次のグラフがあります。

対応するスクリプトは次のとおりです。
Graph Builder(
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Points( X, Y, Legend( 6 ) ), Box Plot( X, Y, Legend( 7 ) ) )
)
手動で凡例を変更し、ポイントに関連付けられた項目の選択を解除します。

次のグラフが表示されます。

更新されたスクリプトは次のとおりです。
Graph Builder(
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Points( X, Y, Legend( 6 ) ), Box Plot( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
"400",
LegendBox,
{Legend Position(
{6, [-1, -1, -1, -1, -1, -1], 7, [0, 1, 2, 3, 4, 5, 6, -3]}
), Position( {-1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, -3} )}
)
)
)この 2 番目のステップを JSL で管理する簡単な方法はありますか?
Re: JSL を使用してグラフ ビルダーで凡例項目を非表示にする個人的には、JMP 12 と JMP 14 の両方でデュアル レジェンドを入手できます。以前にコードを投稿しませんでしたが、問題が発生した場合にプロットを作成するために使用する関数を以下に示します。私の場合、何が起こっているのかというと、コードの一部を使用してポイントの透明度を設定するとすぐに、JMP はポイントの凡例項目が冗長であるとは考えなくなり、結果が表示されるということです。
RadPlotCreator1X1YGroup = Function({dt, XCol, YCol, OverlayCol, GroupXCol, GroupYCol}, {Default Local},
gb = dt << Graph Builder(
Size( 849, 622 ),
Fit to Window( "Off" ),
Show Control Panel(0),
Grid Color( "Black" ),
Variables(
X( XCol ),
Y( YCol ),
Group X( GroupXCol ),
Group Y( GroupYCol ),
Overlay( OverlayCol )
),
Elements(Points(X, Y, Legend(3)), Smoother( X, Y, Legend( 9 ) )),
SendToReport(
Dispatch(
{},
"",
ScaleBox,
{}
),
Dispatch(
{},
"",
ScaleBox,
{}
)
)
);
summarize(unique_values=by(OverlayCol));
NSplits = N Items (unique_values);
sb = report(gb)[ScaleBox(5)];
For(i=0, i < NSplits, i+=1,
sb << Legend Model(3, Properties(i, {Transparency(0.2)}));
);
frame_list = gb << xpath("//FrameBox");
num_frames = N Items (frame_list);
For(i=1, i <= num_frames, i+=1,
Report(gb)[Framebox(i)] << Background Color(White);
Report(gb)[Framebox(i)] << Grid Line Order( Back );
Report(gb)[Framebox(i)] << Reference Line Order( Back );
Report(gb)[Framebox(i)] << Frame Size(250, 250);
Report(gb)[Framebox(i)] << X Axis(0, 150, Inc(20), Minor Ticks(1),
Add Ref Line( 70, Solid, "Black", "", 2 ),
Add Ref Line( 120, Solid, "Black", "", 2 ),
Add Ref Line( 135, Solid, "Black", "", 2 ), Show Major Grid( 1 ));
Report(gb)[Framebox(i)] << Y Axis(Minor Ticks(1));
);
gbp = Report( gb );
img = gbp << getpicture();
return(img);
);Re: JSL を使用してグラフ ビルダーで凡例項目を非表示にする使用している JMP のバージョンとオペレーティング システム。提供された JSL を使用しても、指定したような結果が得られません。JMP 15の場合、私は得ます

JMP 13 と JMP 14 では次のようになります。

JMP 11 と JMP 12 では、次のようになります。

しかし、さまざまなマーカー、凡例の点と長方形のマークの両方を使用して提示したグラフを取得できません。
Re: JSL を使用してグラフ ビルダーで凡例項目を非表示にするこんにちは@txnelson 、
お返事をありがとうございます。
ただし、凡例を完全に非表示にしたり削除したりするのではなく、その一部だけを削除したいと考えています。
デフォルトでは次のグラフがあります。

そして、それを取得するために、凡例内のポイント項目のみを非表示にしたいと思います。

どうやら凡例の位置オプションの「-1」は「この項目を非表示にする」ことを意味しますが、グラフに関する事前情報がないとこのオプションを簡単に使用する方法がわかりません。
もっと明確になることを願っています。
Re: JSL を使用してグラフ ビルダーで凡例項目を非表示にするShow Legend 要素を使用して、凡例の表示または非表示を制御できます。これは、それを示す Scripting Index のエントリです。
ヘルプ==>スクリプトインデックス

JMP の表示ツリー機能を使用して凡例コンポーネント全体を削除することもできます。
gb = Graph Builder(
Size( 528, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Box Plot( X, Y))
);
report(gb)[LegendBox(1)]<<DELETE></DELETE>
Re: JSL を使用してグラフ ビルダーで凡例項目を非表示にするやあみんな、
私は現在、JSL を使用してグラフ ビルダーの凡例の一部を非表示にするという同じ問題に直面しています。
「凡例」または「凡例の位置」オプションが役に立つと思いますが、特にグループの数がわからない場合、その仕組みを完全に理解するのは困難です。
たとえば、Big Class テーブルを使用してこの種のグラフを作成したいのですが、凡例にポイント項目を表示したくありません。

対応するスクリプトは次のとおりです。
Graph Builder(
Size( 528, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Box Plot( X, Y, Legend( 4 ) ), Points( X, Y, Legend( 5 ) ) ),
SendToReport(
Dispatch(
{},
"400",
LegendBox,
{Legend Position(
{4, [0, 1, 2, 3, 4, 5, 6, -3], 5, [-1, -1, -1, -1, -1, -1]}
), Position( {0, 1, 2, 3, 4, 5, 6, -3, -1, -1, -1, -1, -1, -1} )}
)
)
)age 変数のレベル数が分からなくてもプロセスを一般化する方法はありますか?
ご意見をお待ちしております:)ありがとう
Re: JSL を使用してグラフ ビルダーで凡例項目を非表示にするこれに対する JSL ソリューションはないと思います。もしそうなら、たくさんあるはずです。