Come ottenere informazioni sulla casella della legenda, come colore e tipo di indicatoreCara 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 e presenta più indicatori. Ad esempio, di seguito è riportato qualcosa di simile a come potrebbe apparire il grafico (utilizzando Big Class Families.jmp).

Quello che mi piacerebbe fare è prendere i 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 ciò è necessario è che dall'interno del Costruttore di grafici, ogni volta che l'utente utilizza il filtro dati per cambiare 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 l'informazione del colore è in RGB o altro, va bene, non è necessario che sia un nome come "blu" o "rosso".
Eventuali suggerimenti su come procedere sono molto apprezzati.
Grazie,
DS
Ri: Come ottenere informazioni sulla casella della legenda, come colore e tipo di indicatoreCIAO @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 chiede, 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"};
ListaColori = {{66, 112, 221}, {212, 73, 88}, {61, 174, 70}, {162, 43, 221}, {204, 121, 41}, {40, 182, 143} };

Grazie!,
DS
Ri: Come ottenere informazioni sulla casella della legenda, come colore e tipo di indicatoreForse 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 segmento del marcatore) ai numeri di riga effettivi. Forse qualcun altro ha un'idea su come farlo...
Il messaggio "ottieni marcatori" può essere sostituito da "ottieni marcatori" per fornire un elenco dei marcatori utilizzati all'interno di questo segmento marcatori. Ma poiché sono tutti uguali in questo stato, 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 questo ti aiuti.
fratello
Malte
Ri: Come ottenere informazioni sulla casella della legenda, come colore e tipo di indicatoreCIAO @MJE ,
Grazie per il feedback. Sfortunatamente, non è proprio quello che mi interessa fare. L'utente non ha effettivamente modificato lo stato della riga o il marcatore, sta consentendo al Costruttore di grafici 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 eseguite automaticamente dal Costruttore di grafici e quindi applicarle al dt in modo che sia corretto e non venga aggiornato quando viene apportata una modifica al Costruttore di grafici. Voglio farlo automaticamente per facilitare l'utente.
Penso che sia qualcosa di più vicino a MarkerSeg e <<
Sto leggendo un po' l'argomento adesso e sto provando a modificare gli esempi nello Scripting Index, utilizzando 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: {"Dot", "Dot", "Dot", "Dot", "Dot", "Dot", "Dot", "Dot"}
Dal grafico che ho incluso nel post originale, ogni punto dati NON è un "punto".
Grazie!,
DS
Ri: Come ottenere informazioni sulla casella della legenda, come colore e tipo di indicatoreCIAO @SDF1 ,
se ho capito bene il tuo problema, potresti voler controllare gli stati delle righe.
<< copy from row states
E
<< copy to row states
ti consente di trasferire le informazioni sullo stato della riga (come colore, indicatore, ecc.) in una colonna separata e di nuovo negli stati della riga (esempi e sintassi possono essere trovati nell'indice degli script).
fratello
Malte