大家好,
我想在图形构建器中显示 Ellipse 元素,但我只想让轮廓着色而不是完整的椭圆。
我找到了使用自定义菜单并修改线条颜色属性的解决方案。 但是,如果有多个组(使用叠加拖放区),则意味着每个椭圆都需要一个一个地修改。
有没有更快的方法来做到这一点? 如果可能不使用 JSL?
以下是使用 Big Class 数据表的示例:


提前感谢您的投入!
我在 Graph Builder 中看不到执行此操作的无代码方式。 这可能是一个很好的建议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();谢谢@Phil_Kay使用 Fit Y by X 平台的解决方法。 我想我会听从您的建议并在愿望清单中添加一个项目!
谢谢@jthi对于剧本,拥有它也很好!