みなさん、こんにちは。
グラフビルダーで楕円要素を表示したいのですが、完全な楕円ではなく輪郭のみを色付けしたいと思います。
[カスタマイズ] メニューを使用し、[線の色] プロパティを変更して解決策を見つけました。 ただし、(オーバーレイ ドロップ ゾーンを使用して) 複数のグループがある場合は、すべての楕円を 1 つずつ変更する必要があることを意味します。
それを行うより速い方法はありますか? 可能であれば、JSLを使用せずに?
Big Class データ テーブルを使用した例を次に示します。


ご意見をお寄せいただきありがとうございます。
グラフビルダーでこれを行うためのコードなしの方法がわかりません。 これは良い提案かもしれませんJMPウィッシュリスト.
ただし、Fit Y by X では、これをより簡単に実現できます。 グループ化変数を指定するには、赤い三角形のメニューから Group By... を選択する必要があります。 次に、密度楕円を選択します。 次に、プロットを右クリックし、[行の凡例] を選択して、グループ化変数で色付けします。

これは、Find Segs、Legend Server、および Legend Display を使用した非常に厄介なスクリプトの例です...
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Ellipse(X, Y, Legend(11)))
);
lgnd = gb << Get Legend Display;
server = gb << Get Legend Server;
items = lgnd << Get Items;
// get bars
legend_items1 = {};
legend_items2 = {};
For Each({item}, items,
If(item << get type == "Bar",
Insert Into(legend_items1, Num(Word(2, Word(1, Char(item), ","))));
Insert Into(legend_items2, Num(Word(2, Char(item), ",")));
//item << Set Visible(0);
);
);
fill_colors = {};
For Each({{item1, item2}, idx}, Across(legend_items1, legend_items2),
Eval(EvalExpr(item = server << Get Legend Item(Expr(item1), Expr(item2))));
Insert Into(fill_colors, Eval List({item << Get Fill Color}));
item << Set Properties(
{Transparency(1)}
);
);
fb = Report(gb)[Frame Box(1)];
segs = fb << Find Segs;
polysegs = Filter Each({seg}, segs, (seg << class name) == "PolySeg");
poly_i = 0;
For Each({item, idx}, polysegs,
polysegs[idx] << Line Color(fill_colors[idx]);
polysegs[idx] << Line Width(2);
polysegs[idx] << Fill Pattern("None");
);
Write();ありがとう@フィル_ケイFit Y by X プラットフォームを使用した回避策。 あなたのアドバイスに従い、ウィッシュリストにアイテムを追加しようと思います!
ありがとう@jthi台本もあるといいですね!