Creación de la propiedad "Colores de valor"¿Cómo puedo programar la creación de un conjunto de colores de valor para una columna de tabla de datos sin tener que especificar cuáles son en realidad?
Lo pregunto porque tengo una aplicación que espera encontrar una propiedad de "Colores de valor" asociada con una columna seleccionada y se bloqueará si esa propiedad no existe. No quiero tener que definir los colores reales en sí mismos porque son irrelevantes: solo necesito allí para ser una propiedad de colores de valor.
Puedo hacer esto muy fácilmente de forma interactiva simplemente haciendo clic derecho en la columna en cuestión y seleccionando "Colores de valor" de la lista de propiedades, con lo cual se define automáticamente un conjunto predeterminado para mí. Por lo tanto, es esencialmente esta operación la que necesito escribir, y supongo que la solución será una sola línea de código, pero me temo que no puedo verlo. ¿Alguien puede ayudar?
Re: Creación de la propiedad "Value Colors"¡Perfecto!Siempre es mejor preguntar a los expertos que tratar de obtener ese tipo de construcción derecha 
¡Muchas gracias Jim!
Re: Creación de la propiedad "Value Colors"ExprList no se está construyendo correctamente.Debe tener los valores literales en la lista, no los valores calculados.Aquí hay una manera de lograr eso
// 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: Creación de la propiedad "Value Colors"Muchas gracias tanto a Peter como a CWillden por su ayuda; desafortunadamente todavía no estoy allí, pero he podido cristalizar un poco el problema.El script adjunto muestra dónde tengo que llegar ahora: si puedo resolver la dificultad final con respecto a cómo crear una lista de expresiones que luego puedo introducir en la propiedad Value Colors, debería poder obtener lo que necesito:
// 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: Creación de la propiedad "Value Colors"Pude poner una propiedad de colores de valor BS en una columna haciendo esto:
:Column 1 << Set Property("Value Colors",{});Sin embargo, parece que la aplicación realmente debería actualizarse para que funcione de manera más sólida.Requisito extraño.
Re: Creación de la propiedad "Value Colors"Puedes usar JSL así:
column(dt, "Column 1") << Set Property( "Value Colors", {2 = 45, 3 = 46, 4 = 47} );
La manera de resolver esto es
1. Cree una pequeña tabla ficticia con una sola columna numérica
2. Agregue manualmente el Colores de valor atributo
3. Haga clic en el pequeño triángulo rojo junto al nombre de la tabla y seleccione Copiar guión de tabla
4. Abra una ventana de script JSL y pegue el código resultante.
Se verá algo como esto:
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] )
)
);