Créer une carte thermique sur une table de données et mettre à jour un dégradé de couleur avec un scriptSalut,
J'ai beaucoup de données que j'aime tracer sous forme de carte thermique à partir d'une table de données. J'ai joint une image ci-dessous d'un exemple d'image de table de données et les étapes que je fais pour créer la carte thermique sur la table de données. Il suit les étapes suivantes:
- Obtenez un datatable après avoir utilisé tabulate
- Empilez toutes les colonnes (sauf pour 'type'). Ensuite, faites un résumé de l'ensemble de données pour trouver min, médian et max.
- Prenez les valeurs min, médiane et max de l'étape 2 et placez-les dans les valeurs de dégradé de couleur.
Le résultat de la table de données après l'exécution de ces étapes est indiqué ci-dessous. Actuellement, je fais l'étape 3 manuellement où quelle que soit la valeur que j'obtiens après le résumé, je saisis les valeurs du dégradé de couleur. Existe-t-il un moyen de prendre les valeurs (min, médian, max) de la table de données Résumé avec un script et de les entrer dans le dégradé de couleurs?
J'ai également joint l'exemple de jeu de données.


Tableau de donnéesScriptingRe: Créer une carte thermique sur une table de données et mettre à jour un dégradé de couleur avec un scriptVoici le JSL qui définira le dégradé de couleur
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}
)});
Je trouve que le moyen le plus simple d'insérer les valeurs dans les listes requises est d'utiliser un code similaire à celui ci-dessous:
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
)
);Re: Créer une carte thermique sur une table de données et mettre à jour un dégradé de couleur avec un scriptMerci pour la contribution! J'utilise votre script comme un bon point de départ mais j'espérais le rendre plus dynamique.
- Ainsi, dans le script, vous définissez manuellement les valeurs max, min et mid sur les valeurs, y a-t-il un moyen de les définir par le tableau récapitulatif de sortie à l'étape 2 de l'image. Fondamentalement, ce max, min et mid sont dans la portée du test du groupe: 0: AI aimerait obtenir la portée max, min et mid pour l'ensemble du tableau.
- J'ai dû ajouter Color Cell by Value (1) dans mon script et j'ai également essayé de définir une échelle inversée et j'ai reçu des messages d'erreur. Une idée de la façon de procéder?
- Est-il également prudent de supposer que pour exécuter le dégradé de couleurs sur toutes les colonnes, j'aurais besoin d'une boucle for en dehors du code que vous avez envoyé? ou y a-t-il une autre manière de le faire?
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
)
);Re: Créer une carte thermique sur une table de données et mettre à jour un dégradé de couleur avec un scriptVoici un exemple qui automatise la coloration des colonnes de l'exemple de table de données Big Class.Vous devriez pouvoir bifurquer à partir de ce script pour le faire fonctionner avec vos données
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
)
)
);Re: Créer une carte thermique sur une table de données et mettre à jour un dégradé de couleur avec un scriptLorsque j'exécute votre script tel quel (en utilisant un grand ensemble de données de classe), il se bloque pour moi et je reçois le message ci-dessous:
Name Unresolved: myMax in access or evaluation of 'myMax' , myMax/*###*/
at line 25 in Script 4.jsl
Re: Créer une carte thermique sur une table de données et mettre à jour un dégradé de couleur avec un scriptMon erreur ...... les valeurs initiales de myMax etc. ont été reportées des exécutions précédentes pendant que j'écrivais le script.Ci-dessous un correctif
Names Default To Here( 1 );
Clear Symbols();
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( __col__ ),
myMin = Min( __col__ ),
myMid = Mean( __col__ )
)
),
Expr( __col__ ), colList[i]
)
);
Eval(
Substitute(
Expr(
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
)
);
);