Comment utiliser des variables dans les valeurs d'échelle (d'une carte thermique)Salut tout le monde,
Dans l'exemple suivant, une carte thermique a été créée en utilisant Big Class.jmp comme exemple :
gb=Graph Builder(
Size( 686, 525 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ), Color( :age ) ),
Elements( Heatmap( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
7,
Properties(
0,
{gradient( {Scale Values( [11 18] )} )},
Item ID( "age", 1 )
)
)}
)
)
);Existe-t-il un moyen d'utiliser des variables pour définir les limites de l'échelle de gradient ? Voici ce que j'aimerais réaliser :
gradient_low=10;
gradient_high=19;
gb=Graph Builder(
Size( 686, 525 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ), Color( :age ) ),
Elements( Heatmap( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
7,
Properties(
0,
{gradient( {Scale Values( matrix({<FONT face="arial black,avant garde" color="#FF0000">gradient_low</FONT>, <FONT face="arial black,avant garde" color="#FF0000">gradient_high</FONT>}) )} )},
Item ID( "age", 1 )
)
)}
)
)
);
Je voudrais utiliser "grandient_low" et "gradient_high" pour définir les limites de dégradé de la carte thermique.
J'ai essayé d'utiliser eval() , eval expr(), etc. mais je ne l'ai pas encore fait fonctionner.
Merci
Automatisation et scriptsRe : Comment utiliser des variables dans les valeurs d'échelle (d'une carte thermique)Tu peux
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gradient_low = 10;
gradient_high = 19;
gb = Eval(EvalExpr(dt << Graph Builder(
Size(686, 525),
Show Control Panel(0),
Variables(X(:weight), Y(:height), Color(:height)),
Elements(Heatmap(X, Y, Legend(7))),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
7,
Properties(
0,
{gradient({Scale Values(Expr(Matrix({gradient_low, gradient_high})`))})},
Item ID("height", 1)
)
)}
)
)
)));
mais je passerais très probablement par Legend Server
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gradient_low = 10;
gradient_high = 19;
gb = dt << Graph Builder(
Size(686, 525),
Show Control Panel(0),
Variables(X(:weight), Y(:height), Color(:height)),
Elements(Heatmap(X, Y, Legend(7))),
);
m_gradient = Matrix({gradient_low, gradient_high})`;
server = gb << Get Legend Server;
items = server << Get Legend Items;
items[1][1] << Set Properties({gradient({Scale Values(m_gradient)})});Re : Comment utiliser des variables dans les valeurs d'échelle (d'une carte thermique)@LatentDataTiger
Ce que dit Jarmo est correct.Cependant, il a apporté une modification à votre exemple qui pourrait ne pas être remarquée.Votre exemple utilise la variable Age comme colonne Couleur, où Jarmo l'a modifiée en Hauteur.La différence est que l'âge a un type de modélisation ordinal et la hauteur a un type de modélisation continu.Une colonne ordinale ne respectera pas les valeurs de dégradé.Pour ce faire en fonction de l'âge, vous devez modifier le type de modélisation de la colonne.Voici un script qui définit le dégradé de couleurs spécifié pour votre exemple d'origine.
Names Default To Here( 1 );
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
dt:age << modeling type( continuous );
gradient_low = 10;
gradient_high = 19;
Eval(
Eval Expr(
gb = Graph Builder(
Size( 686, 525 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ), Color( :age ) ),
Elements( Heatmap( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
7,
Properties(
0,
{gradient(
{Scale Values( Matrix( {Expr( gradient_low ), Expr( gradient_high )} ) )}
)},
Item ID( "age", 1 )
)
)}
)
)
)
)
)
;Re : Comment utiliser des variables dans les valeurs d'échelle (d'une carte thermique)Salut Jarmo et Jim
Je suis très intéressant d'apprendre la technique du serveur de légende, mais la dernière ligne de votre script n'a pas fonctionné. Voici l'erreur que j'obtiens :
object not subscriptable in access or evaluation of 'items[1][1]' , items[1][/*###*/1]
Pouvez-vous s'il vous plaît aider à vérifier la dernière ligne
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gradient_low = 10;
gradient_high = 19;
gb = dt << Graph Builder(
Size(686, 525),
Show Control Panel(0),
Variables(X(:weight), Y(:height), Color(:height)),
Elements(Heatmap(X, Y, Legend(7))),
);
m_gradient = Matrix({gradient_low, gradient_high});
server = gb << Get Legend Server;
items = server << Get Legend Items;
items[1][1] << Set Properties({gradient({Scale Values(m_gradient)})});
Merci,
Rex
Re : Comment utiliser des variables dans les valeurs d'échelle (d'une carte thermique)Cela pourrait peut-être être lié à la version. Quelle version de JMP utilisez-vous ? J'utilise JMP 17.2.
Re : Comment utiliser des variables dans les valeurs d'échelle (d'une carte thermique)J'utilise actuellement JMP 15 et 16. J'ai JMP 17, mais certains de mes outils développés par mes collègues ne fonctionneraient pas dans JMP17, j'ai donc décidé de rester avec 15 et 16.