Gráfico de superposición color personalizado (colores de fila)Para trazar gráficos de superposición, tengo una tabla de datos JMP donde he codificado por colores las filas para cada dispositivo mediante programación. (tabla grande con filas de 100,000) El color se muestra correctamente cuando trazo en el gráfico de superposición X vs Y (los puntos son colores de fila).Hay algunos miles de puntos para cada dispositivo, y todos los datos de cada dispositivo siempre tienen el mismo color de fila.
Cuando agrupo mi parcela por dispositivo, JMP asigna su propio esquema de color, no el color de mis filas. (No es lo que quiero en este caso)
Para mis diagramas, no quiero mostrar los puntos, sino que quiero conectar los puntos con una línea y quiero que el color del conector sea el color de mis filas.
JMP hace que el color del conector sea un color constante, no el color de mis filas. La única forma en que puedo obtener un color de conector diferente es agrupando por dispositivo. Pero si agrupo por dispositivo, ¡los colores ya no coinciden con el color de mis filas!
Mi DataTable tiene columnas para valores R, G, B, por lo que podría usar esto, pero no estaba seguro de qué hacer.
Por cierto, me encuentro con problemas similares al usar GraphBuilder para esta tarea también...
¡Cualquier sugerencia sera apreciada!
Gracias,
cris
Re: Gráfico de superposición personalizar color (colores de fila)¡Gracias! Esto funcionó para mí.
Re: Gráfico de superposición personalizar color (colores de fila)Hice una pregunta similar hace unos años. Aquí está el hilo:
https://community.jmp.com/t5/Discussions/How-to-create-a-legend-in-Graph-Builder-which-preserves-row/mp/7983#M7977
Re: Gráfico de superposición personalizar color (colores de fila)__fList__ y __mList__ son marcadores de posición en la función Substitute().Ver
Ayuda==Índice de secuencias de comandos==>Funciones==>Sustituir
para definición y ejemplo(s)
Re: Gráfico de superposición personalizar color (colores de fila)Jim,
¿Puedes definir
__fLista__
y
__mLista__
¿Las variables se usan en su ejemplo de código pero no se inicializan / definen?
Gracias,
crisRe: Gráfico de superposición personalizar color (colores de fila)cris,
Tenga la tranquilidad de que está utilizando JSL para hacer lo que está intentando hacer.JSL tiene todas las funciones y capacidades para construir su script genérico.
Re: Gráfico de superposición personalizar color (colores de fila)Jim, gracias por el código, creo que entiendo. ¡Realmente aprecio los ejemplos de sintaxis!Ahora, para mi caso, tendré que generalizarlo (tendré que crear una cadena que tenga todos los contenedores, que no se conocerán hasta el tiempo de ejecución),
Supongo que __fList__ es solo una lista de valores de la columna de interés en la que desea un color en particular.Así que asumo que esta expresión podría hacerse más grande, y mi lista puede tener miles de elementos grandes, y podría tener varios contenedores de colores diferentes en la expresión.
Es posible que tenga tiempo para probar esto más tarde hoy, te dejaré saber cómo va.
El desafío más difícil que veo es construir la expresión a continuación para mi caso generalizado, pero probaré un ejemplo codificado inicialmente como prueba de concepto, puedo volver al foro si me quedo atascado en la expresión.
¡Gracias de nuevo!
cris
Eval(
Substitute(
Expr(
dt:sex << set property( "value colors", {"F" = __fList__, "M" = __mList__} )
),
Expr( __fList__ ), fColorList,
Expr( __mList__ ), mColorList
)
);
Eval(
Substitute(
Expr(
dt:sex << set property( "value colors", {"F" = __fList__, "M" = __mList__} )
),
Expr( __fList__ ), fColorList,
Expr( __mList__ ), mColorList
)
);
// Set the row state colors
dt << Color by Column( :Sex );
Re: Gráfico de superposición personalizar color (colores de fila)Aquí hay una secuencia de comandos que debería darle una idea de cómo manejar los colores RGB al configurar los colores de estado de fila y / o configurar la propiedad de columna de colores de valor
Names Default To Here( 1 );
// Open a sample data table, and modify it to
// have 3 new columns representing the RGB values
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt << New Column( "R" );
dt << New Column( "G" );
dt << New Column( "B" );
For Each Row(
If(
:Sex == "F",
:R = Color To RGB( "red" )[1];
:G = Color To RGB( "red" )[2];
:B = Color To RGB( "red" )[3];,
:R = Color To RGB( "purple" )[1];
:G = Color To RGB( "purple" )[2];
:B = Color To RGB( "purple" )[3];,
)
);
// Here are a couple of examples of setting colors
// The first one just sets the row colors based upon
// the RGB colors from the :R, :G, :B columns
For( i = 1, i <= N Rows( dt ), i++,
colorList = {};
colorList[1] = :R[i];
colorList[2] = :G[i];
colorList[3] = :B[i];
Row State( i ) = Color State( colorList );
);
Wait( 10 );
dt << clear row states;
Wait( 5 );
// The next example, sets the row state colors by
// first setting the "Value Colors", column
// property, and then sets the row state colors
// based upon the "Value Colors"
// To set the "Value Colors", the below commented
// statement needs to be created using JSL
/*dt:sex << set property("value colors",
{"F" = {0.670588235294118, 0.0313725490196078, 0.988235294117647},
"M" = {0.941176470588235, 0.196078431372549, 0.274509803921569}});*/
// First we will create the female RGB color list
// Find a row that has the RGB colors we desire
rowList = dt << get rows where( :Sex == "F" );
// Since all values of R,G & B will be the same, only used the first
// selected row to create the list for the females
fColorList = {};
fColorList[1] = :R[rowList[1]];
fColorList[2] = :G[rowList[1]];
fColorList[3] = :B[rowList[1]];
// Repeat for the males
rowList = dt << get rows where( :Sex == "M" );
mColorList = {};
mColorList[1] = :R[rowList[1]];
mColorList[2] = :G[rowList[1]];
mColorList[3] = :B[rowList[1]];
// Substitute into a template of the Set Property structure
// the created RGB lists for females and males
Eval(
Substitute(
Expr(
dt:sex << set property( "value colors", {"F" = __fList__, "M" = __mList__} )
),
Expr( __fList__ ), fColorList,
Expr( __mList__ ), mColorList
)
);
// Set the row state colors
dt << Color by Column( :Sex );
Re: Gráfico de superposición personalizar color (colores de fila)Es difícil para mí visualizar lo que obtuvo en función de su descripción, pero es posible que deba ver cómo Overlay Plot aplica colores personalizados a sus grupos eligiendo algunos colores manualmente y guardando el script.Entonces, creo que podría escribir su propio script que especifique los valores RGB deseados para cada grupo.Es posible que deba compilar el script a través de un bucle o algo así, pero estoy seguro de que es posible.
¿Alguna posibilidad de que pueda proporcionar un ejemplo de trabajo mínimo para un conjunto de datos para ilustrar lo que está describiendo?
Re: Gráfico de superposición personalizar color (colores de fila)Esto es útil, cuando "marco" una columna (Etiquetar/Desetiquetar) y coloreo por esa columna, los colores de la fila ahora coinciden con el color cuando trazo y agrupo por esa columna, pero ahora mi pregunta es ¿cómo configuro programáticamente el Valores RGB para diferentes grupos en esa columna.Quiero la capacidad de establecer qué es cada uno de los colores por los valores RGB. No estoy seguro del sistema JSL.Tengo una columna para R, G y B, y podría crear una columna concatenada que tenga los 3, luego colorear esa columna, pero no estaba seguro de cómo configurar las propiedades de forma programática para los diferentes grupos.
Re: Gráfico de superposición personalizar color (colores de fila)Creo que tendrá más suerte al mantener los colores que desea, configurando la propiedad de columna, "Colores de valor" para las columnas con las que está trabajando.En su mayor parte, los "colores de valor" son los valores predeterminados de JMP.