Ciao a tutti,
Vorrei visualizzare l'elemento Ellisse nel generatore di grafici, ma vorrei avere solo il contorno colorato e non l'ellisse completa.
Ho trovato una soluzione utilizzando il menu Personalizza e modificando la proprietà Colore linea. Tuttavia, se sono presenti più gruppi (usando la zona di rilascio di sovrapposizione) significa che ogni ellisse deve essere modificata una per una.
C'è un modo più veloce per farlo? Se possibile senza usare JSL?
Ecco un esempio che utilizza la tabella dati Big Class:


Grazie in anticipo per i tuoi input!
Non riesco a vedere un modo senza codice per farlo in Graph Builder. Questo potrebbe essere un buon suggerimento per la lista dei desideri di JMP .
Tuttavia, puoi ottenerlo più facilmente in Fit Y by X. Dal menu del triangolo rosso dovrai selezionare Raggruppa per... per specificare la variabile di raggruppamento. Quindi seleziona Density Elipse. Quindi fare clic con il pulsante destro del mouse sulla trama e selezionare Legenda riga per colorare in base alla variabile di raggruppamento.

Ed ecco un esempio di script molto disordinato con Find Segs, Legend Server e 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();Grazie @Phil_Kay per la soluzione alternativa utilizzando la piattaforma Fit Y by X. Penso che seguirò il tuo consiglio e aggiungerò un articolo alla Wish List!
E grazie @jthi per la sceneggiatura, è bello averlo anche tu!