Overlay Plot personalizza il colore (colori delle righe)Per tracciare grafici sovrapposti, ho un DataTable JMP in cui ho codificato a colori le righe per ciascun dispositivo. (tabella grande con righe di 100.000) Il colore viene visualizzato correttamente quando disegno il grafico sovrapposto X vs Y (i punti sono i colori delle righe).Ci sono alcune migliaia di punti per ogni dispositivo e tutti i dati di ogni dispositivo hanno sempre lo stesso colore di riga.
Quando raggruppo il grafico in base al dispositivo, JMP assegna il proprio schema di colori, non il colore delle mie righe. (Non quello che voglio in questo caso)
Per i miei grafici, non voglio mostrare i punti, invece voglio collegare i punti con una linea e voglio che il colore del connettore sia il colore delle mie righe.
JMP rende il colore del connettore un colore costante, non il colore delle mie righe. L'unico modo per ottenere un colore del connettore diverso è raggruppando per dispositivo. Ma se raggruppo per dispositivo, i colori non corrispondono più al colore delle mie righe!
Il mio DataTable ha colonne per i valori R, G, B, quindi potrei usarlo, ma non ero sicuro di cosa fare?
A proposito, mi imbatto in problemi simili usando GraphBuilder anche per questa attività...
Tutti i suggerimenti sarebbero apprezzati!
Grazie,
Chris
Re: Overlay Plot personalizza il colore (colori delle righe)Grazie! Questo ha funzionato per me.
Re: Overlay Plot personalizza il colore (colori delle righe)Ho fatto una domanda simile qualche anno fa. Ecco il filo:
https://community.jmp.com/t5/Discussions/How-to-create-a-legend-in-Graph-Builder-which-preserves-row/mp/7983#M7977
Re: Overlay Plot personalizza il colore (colori delle righe)__fList__ e __mList__ sono segnaposto nella funzione Substitute().Vedere
Aiuto==Indice di scripting==>Funzioni==>Sostituisci
per definizione ed esempio(i)
Re: Overlay Plot personalizza il colore (colori delle righe)Jim,
Puoi definire
__fLista__
E
__mLista__
Le variabili sono utilizzate nel tuo esempio di codice ma non sono inizializzate/definite?
Grazie,
ChrisRe: Overlay Plot personalizza il colore (colori delle righe)Chris,
Sii confortato dal fatto che stai usando JSL per fare ciò che stai tentando di fare.JSL ha tutte le funzioni e le capacità per costruire il tuo script generico.
Re: Overlay Plot personalizza il colore (colori delle righe)Jim, grazie per il codice, penso di aver capito. Apprezzo molto gli esempi di sintassi!Ora per il mio caso, dovrò generalizzarlo (avrò bisogno di costruire una stringa che abbia tutti i contenitori, che non saranno noti fino al momento dell'esecuzione),
Presumo che __fList__ sia solo un elenco di valori dalla colonna di interesse che desideri un colore particolare.Quindi presumo che questa espressione potrebbe diventare più grande, e la mia lista può essere di migliaia di elementi grandi, e potrei avere diversi raccoglitori di colori nell'espressione..
Potrei avere il tempo di provarlo più tardi oggi, ti farò sapere come va.
La sfida più difficile che vedo è costruire l'espressione qui sotto per il mio caso generalizzato, ma proverò inizialmente un esempio codificato come prova del concetto, potrei tornare sul forum se rimango bloccato sull'espressione.
Grazie ancora!
Chris
Eval(
Substitute(
Expr(
dt:sex << set property( "value colors", {"F" = __fList__, "M" = __mList__} )
),
Expr( __fList__ ), fColorList,
Expr( __mList__ ), mColorList
)
);
Eval(
Substitute(
Expr(
dt:sex << set property( "value colors", {"F" = __fList__, "M" = __mList__} )
),
Expr( __fList__ ), fColorList,
Expr( __mList__ ), mColorList
)
);
// Set the row state colors
dt << Color by Column( :Sex );
Re: Overlay Plot personalizza il colore (colori delle righe)Ecco uno script che dovrebbe darti un'idea di come gestire i colori RGB nell'impostazione dei colori dello stato della riga e/o nell'impostazione della proprietà della colonna Value Colors
Names Default To Here( 1 );
// Open a sample data table, and modify it to
// have 3 new columns representing the RGB values
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt << New Column( "R" );
dt << New Column( "G" );
dt << New Column( "B" );
For Each Row(
If(
:Sex == "F",
:R = Color To RGB( "red" )[1];
:G = Color To RGB( "red" )[2];
:B = Color To RGB( "red" )[3];,
:R = Color To RGB( "purple" )[1];
:G = Color To RGB( "purple" )[2];
:B = Color To RGB( "purple" )[3];,
)
);
// Here are a couple of examples of setting colors
// The first one just sets the row colors based upon
// the RGB colors from the :R, :G, :B columns
For( i = 1, i <= N Rows( dt ), i++,
colorList = {};
colorList[1] = :R[i];
colorList[2] = :G[i];
colorList[3] = :B[i];
Row State( i ) = Color State( colorList );
);
Wait( 10 );
dt << clear row states;
Wait( 5 );
// The next example, sets the row state colors by
// first setting the "Value Colors", column
// property, and then sets the row state colors
// based upon the "Value Colors"
// To set the "Value Colors", the below commented
// statement needs to be created using JSL
/*dt:sex << set property("value colors",
{"F" = {0.670588235294118, 0.0313725490196078, 0.988235294117647},
"M" = {0.941176470588235, 0.196078431372549, 0.274509803921569}});*/
// First we will create the female RGB color list
// Find a row that has the RGB colors we desire
rowList = dt << get rows where( :Sex == "F" );
// Since all values of R,G & B will be the same, only used the first
// selected row to create the list for the females
fColorList = {};
fColorList[1] = :R[rowList[1]];
fColorList[2] = :G[rowList[1]];
fColorList[3] = :B[rowList[1]];
// Repeat for the males
rowList = dt << get rows where( :Sex == "M" );
mColorList = {};
mColorList[1] = :R[rowList[1]];
mColorList[2] = :G[rowList[1]];
mColorList[3] = :B[rowList[1]];
// Substitute into a template of the Set Property structure
// the created RGB lists for females and males
Eval(
Substitute(
Expr(
dt:sex << set property( "value colors", {"F" = __fList__, "M" = __mList__} )
),
Expr( __fList__ ), fColorList,
Expr( __mList__ ), mColorList
)
);
// Set the row state colors
dt << Color by Column( :Sex );
Re: Overlay Plot personalizza il colore (colori delle righe)È difficile per me visualizzare ciò che hai ottenuto in base alla tua descrizione, ma potresti dover esaminare come Overlay Plot applica i colori personalizzati ai tuoi gruppi scegliendo alcuni colori manualmente e salvando lo script.Quindi penserei che potresti scrivere il tuo script che specifica invece i valori RGB desiderati per ciascun gruppo.Potrebbe essere necessario creare lo script tramite un ciclo o qualcosa del genere, ma sono sicuro che sia possibile.
Qualche possibilità che tu possa fornire un esempio minimo di lavoro per un set di dati per illustrare ciò che stai descrivendo?
Re: Overlay Plot personalizza il colore (colori delle righe)Questo è utile, quando "contrassegno" una colonna (Etichetta / Unlabel) e colore per quella colonna, i colori della riga ora corrispondono al colore quando disegno e raggruppo per quella colonna, ma ora la mia domanda è come posso impostare programmaticamente il Valori RGB per diversi gruppi in quella colonna.Voglio la possibilità di impostare ciò che ciascuno dei colori è in base ai valori RGB. Non sono sicuro del sytex JSL.Ho una colonna per R, G e B, e potrei creare una colonna concatenata che abbia tutti e 3, quindi colorare in base a quella colonna, ma non ero sicuro di come impostare in modo programmatico le proprietà per i diversi gruppi.
Re: Overlay Plot personalizza il colore (colori delle righe)Penso che avrai più fortuna nel mantenere i colori desiderati che desideri, impostando la proprietà della colonna "Valore colori" per le colonne con cui stai lavorando.Per la maggior parte, i "Colori valore" sono l'impostazione predefinita di JMP.