Come ottenere informazioni sulla Legend Box, come il colore e il tipo di pennarelloGentile comunità JMP,
(W10 Enterprise a 64 bit, JMP Pro 15.0)
Ho un utente che utilizza il generatore di grafici per generare un grafico piuttosto complesso contenente più bit di informazioni. I dati di mercato sono suddivisi per regione, cliente, ecc. Di conseguenza, il grafico a dispersione è codificato a colori oltre ad avere più indicatori. Ad esempio, di seguito è riportato qualcosa di simile a come potrebbe apparire il grafico (usando Big Class Families.jmp).

Quello che vorrei fare è prendere i suoi grafici originali del generatore di grafici ed estrarre dalla legenda lo stile e il colore del marcatore e impostarli come proprietà dt. Lo scopo è che l'utente possa eseguire un po' di codice JSL come pulsante di scelta rapida nella barra degli strumenti che correggerà i marcatori e i colori per i dati. Il motivo per cui è necessario è che dall'interno di Graph Builder, ogni volta che l'utente utilizza il filtro dati per modificare le regioni, la codifica a colori e gli indicatori cambiano per l'insieme di clienti perché il numero di clienti cambia all'interno di ciascuna regione. Ad esempio, vorrebbero averlo come proprietà fissa della colonna di dati.
Stavo provando un po' di codice JSL come questo nel tentativo di ottenere le informazioni da LegendBox(1) all'interno della struttura ad albero, ma ottengo null come risultato della riga: test = legend<
Names Default to here(1);
dt = Open("$Sample_Data/Big Class Families.jmp");
gb=dt<<GRAPH builder=""></GRAPH><BR />test = legend<<GET property=""></GET>Se le informazioni sul colore sono in RGB o altro, va bene, non è necessario che sia un nome come "blu" o "rosso".
Qualsiasi suggerimento su come procedere è molto apprezzato.
Grazie,
ds
Re: Come ottenere informazioni sulla Legend Box, come il colore e il tipo di pennarelloCiao @MJE ,
Grazie per il feedback aggiuntivo. Funziona! Grazie per la soluzione, la segnalerò come tale. L'ho modificato leggermente per essere più simile a ciò che l'utente sta chiedendo, ma per il resto fa il suo lavoro. Da quello che posso dire, l'elenco dei marcatori e dei colori è nello stesso ordine della legenda.
Ecco la versione modificata del tuo codice che ho usato:
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :age ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height)
);
segs = Report(gb)[Framebox(1)]<<FIND segs=""></FIND>
E l'output che ottengo:
MarkerList = {"Cerchio", "Più", "Diamante", "X", "Triangolo", "Y"};
Elenco colori = {{66, 112, 221}, {212, 73, 88}, {61, 174, 70}, {162, 43, 221}, {204, 121, 41}, {40, 182, 143} };

Grazie!,
ds
Re: Come ottenere informazioni sulla Legend Box, come il colore e il tipo di pennarelloForse questa parte qui potrebbe aiutarti. Almeno, fornisce alcune informazioni su quale punto dati effettivo nel grafico ha quale colore e indicatore. Sfortunatamente, non sono riuscito a trovare un modo per correlare direttamente i punti dati (rispettivamente il marcatore seg) ai numeri di riga effettivi. Forse qualcun altro ha un'idea su come farlo...
Il messaggio "get marker" può essere sostituito da "get markers" per fornire un elenco di marker utilizzati all'interno di questo marker seg. Ma poiché sono tutti uguali in questo stato, l'ho tagliato corto per una migliore leggibilità.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height)
);
//gb << show tree structure;//only for debugging and building the script
segs = Report( gb )[Framebox( 1 )] << Find Segs;
For ( i = 1, i <= n items (segs), i++,
seg = Report( gb )[Framebox( 1 )] << Find Seg( MarkerSeg(i) );
nx = seg << get x values;
ny = seg << get y values;
m = seg << get marker;
c = seg << get colors;
show (nx, ny, m, c);
);
Spero che sia di aiuto.
fr
Malte
Re: Come ottenere informazioni sulla Legend Box, come il colore e il tipo di pennarelloCiao @MJE ,
Grazie per il feedback. Sfortunatamente, non è proprio quello che mi interessa fare. L'utente non ha effettivamente modificato lo stato della riga o l'indicatore, ma consente a Graph Builder di farlo automaticamente. Ma ogni volta che viene apportata una modifica, i colori e gli indicatori cambiano in base alle impostazioni predefinite di JMP. Voglio estrarre le "impostazioni" del marcatore e del colore che Graph Builder esegue automaticamente e quindi applicarlo al dt in modo che sia corretto e non venga aggiornato quando viene apportata una modifica a Graph Builder. Voglio farlo automaticamente per facilitare l'utente.
Penso che sia qualcosa di più vicino a MarkerSeg e <<
Sto leggendo un po' su di esso ora e sto provando a modificare gli esempi nell'indice di script, usando il codice modificato di seguito.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height, Row States(dt))
);
gb << show tree structure;//only for debugging and building the script
lgnd = (gb << Report)[FrameBox(1)];
markerseg = (lgnd<<FIND seg=""></FIND>
Ma, quando lo eseguo, ottengo il seguente output per markerseg: {"Punto", "Punto", "Punto", "Punto", "Punto", "Punto", "Punto", "Punto"}
Dal grafico che ho incluso nel post originale, ogni punto dati NON è un "Punto".
Grazie!,
ds
Re: Come ottenere informazioni sulla Legend Box, come il colore e il tipo di pennarelloCiao @SDF1 ,
se ho capito correttamente il tuo problema, potresti voler controllare gli stati della riga.
<< copy from row states
e
<< copy to row states
ti consente di trasferire le informazioni sullo stato della riga (come colore, marcatore, ecc.) in una colonna separata e di nuovo negli stati della riga (esempi e sintassi possono essere trovati nell'indice di scripting).
fr
Malte