Color en los indicadoresHola a todos,
Estoy intentando crear un informe en JMP que me permita ver desviaciones en ciertos procesos.
Por ejemplo, estudio 6 ítems en mi proceso y me gustaría tener un indicador con colores:
- si 5 puntos consecutivos (o más) superiores a 3sigma: color rojo
- si 3 puntos consecutivos (o más) mayores que 3sigma: color amarillo
- de lo contrario color verde
Y luego me gustaría poder mostrar en un informe algo como esto por elemento dependiendo de los colores de los indicadores:

¿Cómo podría tener algo similar en JMP?
Gracias por tu respuesta.
Automatización y scriptingRe: Color en indicadores¿Cada "Artículo" está en una columna separada?
¿Sus datos están en orden secuencial?
¿Cuántos "artículos" diferentes hay?
¿El informe solo debe tener 3 elementos diferentes en cada fila del informe?
Re: Color en indicadoresSi desea tener una tabla, utilice la tabla de datos y coloree las celdas. En el generador de gráficos, es posible que pueda utilizar un mapa de calor. Si desea crear un script, tiene muchas opciones diferentes en las que puede configurar el color de fondo.
Re: Color en indicadores¿Cada "ítem" está en una columna separada? Sí, un artículo por columna
¿Sus datos están en orden secuencial? Sí, se pueden ordenar en orden secuencial.
¿Cuántos "elementos" diferentes hay? Muchos...
¿El informe solo debe tener 3 elementos diferentes en cada fila? Sí
Re: Color en indicadoresUna opción sencilla es algo como esto
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(6),
Compress File When Saved(1),
New Column("item",
Character,
"Nominal",
Set Values({"ITEM1", "ITEM2", "ITEM3", "ITEM4", "ITEM5", "ITEM6"})
),
New Column("status",
Character,
"Nominal",
Set Values({"Green", "Green", "Red", "Yellow", "Green", "Red"})
)
);
lub = Lineup Box(N Col(3));
For Each Row(dt,
Eval(EvalExpr(
lub << Append(
Text Box(:item, << Background Color(Expr(:status)))
)
));
);
nw = New Window("",
lub
);

Re: Color en indicadoresGracias por la respuesta, estoy intentando crear una tabla similar con indicadores rojos, amarillos y verdes.
Mi objetivo es crear:
- si 5 puntos consecutivos (o más) son rojos (por encima de 3 sigma), entonces el color del último punto es rojo
- si 3 puntos consecutivos (o más) son rojos (por encima de 3 sigma), entonces el color del último punto es amarillo
- de lo contrario color verde
En el adjunto pueden encontrar una tabla que sirve como ejemplo, creé el siguiente script pero sin éxito:
dt = current data table();
// Créez une nouvelle colonne pour l'indicateur
dt << New Column("Indicateur", Character, Nominal);
// Boucle pour calculer l'indicateur ligne par ligne
For(i = 1, i <= N Rows(5), i++,
// Récupérer les 5 dernières valeurs de l'indicateur
last_five = dt:status[i,5]; //
// Comptez le nombre de "rouge"
count_rouge = N Items( last_five == "rouge");
// Attribuer une couleur en fonction des règles
If(count_rouge == 5,
dt:Indicateur Global[i] = "rouge"; // 5 rouges
,
If(count_rouge >= 3,
dt:Indicateur Global[i] = "jaune"; // 3 ou plus rouges
,
dt:Indicateur Global[i] = "vert"; // Sinon vert
);
);
);Re: Color en indicadoresCreo que este código hace lo que quieres:
dt = New Table( "testcolors", Add Rows( 15 ),
New Column( "Article", Character, "Nominal",
Set Values( {"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A"}
) ),
New Column( "Item", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] )
),
New Column( "status", Character, "Nominal",
Set Values(
{"red", "red", "red", "green", "green", "red", "red", "red", "red",
"red", "red", "green", "red", "red", "red"}
)
),
// Créez une nouvelle colonne pour l'indicateur
New Column("Indicateur", Character, Nominal)
);
one_color = "xyz";
icolor = 0;
for (i = 1, i <= nrows(dt), i++,
one_color = dt:status[i];
if (one_color == "red",
icolor++;
// else
,
if (icolor >= 5,
dt:Indicateur << Color Cells( "Red", i-1 );
icolor = 0;
// else
,
icolor >= 3,
dt:Indicateur << Color Cells( "Yellow", i-1 );
icolor = 0;
);
);
);
// Handle the last row
if (icolor >= 5,
dt:Indicateur << Color Cells( "Red", i-1 );
// else
,
icolor >= 3,
dt:Indicateur << Color Cells( "Yellow", i-1 );
);

Re: Color en indicadoresSigo confundido. Sin embargo, dada la tabla de datos que me proporcionaste, que parece ser una tabla que contiene los resultados de lo que intentas calcular, uno puede colorear fácilmente las celdas de tu columna Indicador

names default to here(1);
dt=current data table();
dt << New Column("Indicateur", Character, Nominal);
:indicateur << color cells("red",dt<<GET rows="" where=""></GET>
<P>o puede crear un informe separado</P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="txnelson_1-1736426542617.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="txnelson_1-1736426542617.png" style="width: 119px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="txnelson_1-1736426542617.png" style="width: 119px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="txnelson_1-1736426542617.png" style="width: 119px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="txnelson_1-1736426542617.png" style="width: 119px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="txnelson_1-1736426542617.png" style="width: 119px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="txnelson_1-1736426542617.png" style="width: 119px;"><span class="lia-inline-image-display-wrapper" image-alt="txnelson_1-1736426542617.png" style="width: 119px;"><img src="https://us.v-cdn.net/6038925/uploads/images/71760iF5D0EC4B9B8E8098/txnelson_1-1736426542617.png" role="button" title="txnelson_1-1736426542617.png" alt="txnelson_1-1736426542617.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P>
<CODE class=" language-jsl">nw=new window("colors", lub=lineupbox(ncol(3)));
For Each Row(dt,
Eval(EvalExpr(
lub << Append(
Text Box("Item" || char(:item), << Background Color(Expr(:status)))
)
));
);Re: Color en indicadoresHola, gracias por la respuesta, ¡funciona bien en esta base de prueba!
Estoy intentando generalizar este script cuando tengo varios artículos. Los indicadores de color se crean por artículo.
Utilizo el siguiente script pero no obtengo el resultado final correcto:
dt = current data table();
// Créez une nouvelle colonne pour l'indicateur
dt << New Column("Indicateur", Character, Nominal)
one_color = "xyz";
icolor = 0;
Summarize(dt, unique_objects = by(:Article));
m_obs = dt[0, "Article"];
For each( {unique_objects}, m_obs,
for (i = 1, i <= nrows(dt), i++,
one_color = dt:status[i];
if (one_color == "red",
icolor++;
// else
,
if (icolor >= 5,
dt:Indicateur << Color Cells( "Red", i-1 );
icolor = 0;
// else
,
icolor >= 3,
dt:Indicateur << Color Cells( "Yellow", i-1 );
icolor = 0;
);
);
);
// Handle the last row
if (icolor >= 5,
dt:Indicateur << Color Cells( "Red", i-1 );
// else
,
icolor >= 3,
dt:Indicateur << Color Cells( "Yellow", i-1 );
);
);El resultado obtenido:

La línea 18 debe tener el color amarillo porque hay 3 puntos rojos consecutivos para el artículo B...
Re: Color en indicadoresAquí está mi enfoque

names default to here(1);
dt = current data table();
// Créez une nouvelle colonne pour l'indicateur
dt << New Column("Indicateur", Character, Nominal);
one_color = "xyz";
icolor = 0;
For Each Row(
// If the value of Article has changed set icolor to 0
If( Lag( :Article ) != :Article,
icolor = 0
);
// If status is red, increment icolor else set it back to zero
If( :status == "red",
icolor++,
icolor = 0
);
// Check for the number of icolor
// Set the value for the cell to the appropriate color
// When a color is specified remove no longer correct cell colors
// for previous rows
If(
icolor >= 5,
dt:Indicateur << color cells("red",row());
dt:Indicateur << color cells("",row()-1);
If( icolor == 5,
dt:Indicateur << color cells("",row()-2);
);,
icolor >= 3,
dt:Indicateur << color cells("yellow",row());
dt:Indicateur << color cells("",row()-1);
);
);Re: Color en indicadoresGracias por tu respuesta.
Funciona pero no exactamente como debería.
Intenté hacer cambios en el segundo bucle if pero no puedo encontrar la solución.
A continuación se muestra el resultado exacto que me gustaría lograr:

Re: Color en indicadoresMi último script suponía que solo querías que la última fila de una serie mantuviera el color calculado. Para lograr lo que indica tu última especificación, simplemente comenté las líneas que restablecen los colores si el script determinaba que no era la última fila de la serie.

names default to here(1);
dt = current data table();
// Créez une nouvelle colonne pour l'indicateur
dt << New Column("Indicateur", Character, Nominal);
one_color = "xyz";
icolor = 0;
For Each Row(
// If the value of Article has changed set icolor to 0
If( Lag( :Article ) != :Article,
icolor = 0
);
// If status is red, increment icolor else set it back to zero
If( :status == "red",
icolor++,
icolor = 0
);
// Check for the number of icolor
// Set the value for the cell to the appropriate color
// When a color is specified remove no longer correct cell colors
// for previous rows
If(
icolor >= 5,
dt:Indicateur << color cells("red",row());
//dt:Indicateur << color cells("",row()-1);
/*If( icolor == 5,
dt:Indicateur << color cells("",row()-2);
);*/,
icolor >= 3,
dt:Indicateur << color cells("yellow",row());
//dt:Indicateur << color cells("",row()-1);
);
);Re: Color en indicadoresNo estoy seguro de cómo esto se relaciona con la pregunta inicial, pero hay una opción un poco diferente para crear la columna del indicador.
dt = Current Data Table();
dt << New Column("Color", Character, Nominal,
Set Property(
"Value Colors",
{"Green" = "Green", "Red" = "Red", "Yellow" = "Yellow"}
),
Color Cell By Value,
Formula(
is_red = :status == "red";
If(Row() == 1,
red_count = is_red;
);
If(:Article != Lag(:Article, 1) | is_red == 0,
red_count = is_red;
,
red_count = red_count + is_red;
);
If(red_count >= 5,
"Red";
, red_count >= 3,
"Yellow"
,
"Green"
);
)
);