Creazione di heatmap su un gradiente di colore databile e aggiornamento con scriptCiao,
Ho molti dati che mi piace tracciare come mappa termica da una tabella di dati. Ho allegato un'immagine sotto di un'immagine di tabella dati di esempio e i passaggi che eseguo per creare la mappa termica sulla tabella dati. Segue i seguenti passaggi:
- Ottieni un datatable dopo aver usato tabulate
- Impila tutte le colonne (eccetto "tipo"). Quindi fare un riepilogo dell'intero set di dati per trovare min, mediana e max.
- Prendi i valori minimo, mediano e massimo del passaggio 2 e inseriscili nei valori del gradiente di colore.
Il risultato della tabella dati dopo aver eseguito questi passaggi è mostrato di seguito. Attualmente eseguo manualmente il passaggio 3 in cui qualsiasi valore ricevo nel riepilogo inserito nei valori del gradiente di colore. C'è un modo per prendere i valori (min, median, max) dal riepilogo databile con uno script e inserirli nel gradiente di colore?
Ho allegato anche il set di dati di esempio.


Tabella datiScriptingRi: creazione di una mappa termica su un gradiente di colore datatable e aggiornamento con lo scriptEcco il JSL che imposterà il gradiente di colore
names default to here(1);
dt=current data table();
dt:"Group:0, test:A"n << set property("color gradient",{"Green Yellow Red", Range(
{-142.439058836207, -42.6065023706896, -97.9221899694684}
)});
Trovo che il modo più semplice per inserire i valori negli elenchi richiesti è utilizzare un codice simile al seguente:
Max = -142.439058836207;
Min = -42.6065023706896;
Mid = -97.9221899694684;<BR />
Eval(
Substitute(
Expr(
dt:"Group:0, test:A"n << set property(
"color gradient",
{"Green Yellow Red", Range( {__Max__, __Min__, __Mid__} )}
);
),
Expr( __Max__ ), Max,
Expr( __Min__ ), Min,
Expr( __Mid__ ), Mid
)
);Ri: creazione di una mappa termica su un gradiente di colore datatable e aggiornamento con lo scriptGrazie per l'input! Sto usando la tua sceneggiatura come un buon punto di partenza, ma speravo di renderla più dinamica.
- Quindi nello script si impostano manualmente i valori massimo, minimo e medio a, esiste un modo per impostarli dalla tabella di riepilogo dell'output nel passaggio 2 nell'immagine. Fondamentalmente questo massimo, minimo e medio sono nell'ambito del test Gruppo: 0: AI vorrebbe ottenere l'ambito massimo, minimo e medio per l'intera tabella.
- Ho dovuto aggiungere Color Cell by Value (1) nel mio script e ho provato a impostare anche la scala inversa e ho ricevuto messaggi di errore, qualche idea su come farlo?
- Inoltre è lecito ritenere che per eseguire il gradiente di colore su tutte le colonne avrei bisogno di un ciclo for al di fuori del codice che hai inviato? O c'è un altro modo per farlo?
names default to here(1);
dt=current data table();
dt:"Group:0, test:A" << set property("color gradient",{"Green Yellow Red", Range(
{-142.439058836207, -42.6065023706896, -97.9221899694684}
)});
Max = -142.439058836207;
Min = -42.6065023706896;
Mid = -97.9221899694684;
Eval(
Substitute(
Expr(
dt:"Group:0, test:A"n << set property(
"color gradient",
{"Green Yellow Red", Range( {__Max__, __Min__, __Mid__} )},
)
:dt << Color Cell by Value( 1 );
),
Expr( __Max__ ), Max,
Expr( __Min__ ), Min,
Expr( __Mid__ ), Mid
)
);Ri: creazione di una mappa termica su un gradiente di colore datatable e aggiornamento con lo scriptDi seguito è riportato un esempio che automatizza la colorazione delle colonne della tabella dei dati di esempio di Big Class.Dovresti essere in grado di staccarti da questo script per farlo funzionare con i tuoi dati
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
colList = dt << get column names( continuous, string );
For( i = 1, i <= N Items( colList ), i++,
Eval(
Substitute(
Expr(
Summarize(
dt,
myMax = Max( As Column( __col__ ) ),
myMin = Min( As Column( __col__ ) ),
myMid = Mean( As Column( __col__ ) )
);
Column( __col__ ) <<
set property(
"color gradient",
{"Green Yellow Red",
Range( {__Max__, __Min__, __Mid__} ), "Reverse Scale"}
) << Color Cell by Value( 1 );
),
Expr( __col__ ), colList[i],
Expr( __Max__ ), myMax,
Expr( __Min__ ), myMin,
Expr( __Mid__ ), myMid
)
)
);Ri: creazione di una mappa termica su un gradiente di colore datatable e aggiornamento con lo scriptQuando eseguo il tuo script così com'è (usando un set di dati di grandi classi) per me si arresta in modo anomalo e ricevo il messaggio seguente:
Name Unresolved: myMax in access or evaluation of 'myMax' , myMax/*###*/
at line 25 in Script 4.jsl