Création de la propriété "Value Colors"Comment puis-je créer un script de création d'un ensemble de couleurs de valeur pour une colonne de table de données sans avoir à spécifier ce qu'elles sont réellement ?
Je demande parce que j'ai une application qui s'attend à trouver une propriété "Value Colors" associée à une colonne sélectionnée et qui se bloquera si cette propriété n'existe pas. Je ne veux pas avoir à définir les couleurs elles-mêmes parce qu'elles ne sont pas pertinentes : j'ai juste besoin de être une propriété Valeur Couleurs.
Je peux le faire très facilement de manière interactive en cliquant simplement avec le bouton droit de la souris sur la colonne en question et en sélectionnant "Value Colors" dans la liste des propriétés, après quoi un ensemble par défaut est défini automatiquement pour moi. C'est donc essentiellement cette opération que j'ai besoin de scripter - et je suppose que la solution sera une seule ligne de code, mais j'ai bien peur de ne pas la voir. Quelqu'un peut-il aider?
Re : Création de la propriété "Value Colors"Parfait!Toujours mieux de demander aux experts que d'essayer d'obtenir ce sorte de construction à droite 
Merci beaucoup, Jim!
Re : Création de la propriété "Value Colors"L'ExprList n'est pas construit correctement.Vous devez avoir les valeurs littérales dans la liste, pas les valeurs calculées.Voici une façon d'y parvenir
// Start of script;
Names Default To Here( 1 );
Clear Log();
dt = Open( "$SAMPLE_DATA/Big Class.JMP" );
Summarize( NamesList = by( :Name ) );
Show( NamesList );
// Build the ExprLIst to be exactly what the Value Colors
// list needs to be
ExprList = {};
For( i = 1, i <= N Items( NamesList ), i++,
Eval(
Substitute(
Expr(
Insert Into( ExprList, Expr( __Names__ = __color__ ) )
),
Expr( __Names__ ), NamesList[i],
Expr( __color__ ), 2 + i
)
)
);
Show( ExprList );
// Then insert the resulting expression as the Value Colors property of the :Names column, and I should get what I want.
:Name << set property( "Value Colors", ExprList );
// The Value Colors property is correct;
Show( :Name << get property( "Value Colors" ) );Re : Création de la propriété "Value Colors"Un grand merci à Peter et CWillden pour votre aide ; malheureusement je n'en suis toujours pas là - mais j'ai pu cristalliser un peu le problème.Le script ci-joint montre où j'en suis maintenant : si je peux résoudre la dernière difficulté concernant la création d'une liste d'expressions que je peux ensuite alimenter dans la propriété Value Colors, je devrais pouvoir obtenir ce dont j'ai besoin :
// Start of script;
clear log();
dt = Open( "$SAMPLE_DATA/Big Class.JMP" );
// The Value Colors property of the first column is initially empty;
show(:Name << get property("Value Colors"));
/*
I now want to create a Value Colors property for this column,
but I'd prefer to do it without having to identify all the names
beforehand if possible. Try CWillden's suggestion...
*/
:Name << set property("Value Colors", {});
// If I now try to color the cells by value, it DOES actually seem to have worked;
:Name << color cell by value(1);
// But the Value Colors property STILL only contains an empty list;
show(:Name << get property("Value Colors"));
/*
Unfortunately I do actually need a populated list - and it looks like I can't do it
without extracting the names explicity. Here's one way I think I COULD do it...
*/
summarize(NamesList=by(:Name));
show(NamesList);
/*
I now need to put those names into a list of expressions that follow the syntax
shown in PMRoz's post, and use that list to define the Value Colors property I need.
This next bit is WRONG - but you can see what I'm trying to do here.
What I need inside ExprList is a list of names, each coupled with an integer from 3 onwards
(to get some colors starting at red). I suspect I should probably be using the Substitute
and/or Eval Expr functions at this point, but I can't get the correct syntax.
*/
ExprList = {};
for(i=1, i<=nItems(NamesList), i++,
insert into(ExprList, expr(NamesList[i] = (2+i)))
);
show(ExprList);
// Then insert the resulting expression as the Value Colors property of the :Names column, and I should get what I want.
:Name << set property("Value Colors", ExprList);
// End of script.Re : Création de la propriété "Value Colors"J'ai pu mettre une propriété de couleurs de valeur BS dans une colonne en faisant ceci:
:Column 1 << Set Property("Value Colors",{});Il semble que l'application devrait vraiment être mise à jour pour fonctionner de manière plus robuste.Exigence étrange.
Re : Création de la propriété "Value Colors"Vous pouvez utiliser JSL comme ceci :
column(dt, "Column 1") << Set Property( "Value Colors", {2 = 45, 3 = 46, 4 = 47} );
La façon de comprendre cela est de
1. Créez un petit tableau factice avec une seule colonne numérique
2. Ajoutez manuellement le Couleurs de valeur attribut
3. Cliquez sur le petit triangle rouge à côté du nom de la table et sélectionnez Copier le script de table
4. Ouvrez une fenêtre de script JSL et collez le code résultant.
Cela ressemblera à ceci :
New Table( "Untitled 14",
Add Rows( 3 ),
New Column( "Column 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Property( "Value Colors", {1 = -13977687, 2 = -3780931, 3 = -4222943} ),
Set Selected,
Set Values( [1, 2, 3] )
)
);