Colore sugli indicatoriCiao a tutti,
Sto cercando di creare un report in JMP che mi permetta di vedere le deviazioni in determinati processi.
Ad esempio, studio 6 elementi nel mio processo e vorrei avere un indicatore con i colori:
- se 5 punti consecutivi (o più) maggiori di 3sigma: colore rosso
- se 3 punti consecutivi (o più) maggiori di 3sigma: colore giallo
- altrimenti colore verde
E poi mi piacerebbe poter visualizzare in un report qualcosa di simile per articolo a seconda dei colori degli indicatori:

Come potrei avere qualcosa di simile su JMP?
Grazie per la tua risposta
Automazione e scriptingRe: Colore sugli indicatoriOgni "Articolo" si trova in una colonna separata?
I tuoi dati sono in ordine sequenziale?
Quanti "Oggetti" diversi ci sono?
Il report dovrebbe contenere solo 3 elementi diversi in ogni riga?
Re: Colore sugli indicatoriSe vuoi avere una tabella, usa la tabella dati e colora le celle. In Graph Builder potresti essere in grado di usare la mappa di calore. Se vuoi scriverne uno script, hai molte opzioni diverse in cui puoi impostare il colore di sfondo.
Re: Colore sugli indicatoriOgni "Articolo" è in una colonna separata? Sì, un articolo per colonna
I tuoi dati sono in ordine sequenziale? Sì, possono essere ordinati in ordine sequenziale.
Quanti "Oggetti" diversi ci sono? Un sacco di... .
Il report dovrebbe avere solo 3 elementi diversi in ogni riga del report? Sì
Re: Colore sugli indicatoriUn'opzione semplice è qualcosa del genere
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: Colore sugli indicatoriGrazie per la risposta, sto cercando di creare una tabella simile con indicatori rossi, gialli e verdi.
Il mio obiettivo è creare:
- se 5 punti consecutivi (o più) sono rossi (sopra 3 sigma) allora il colore dell'ultimo punto è rosso
- se 3 punti consecutivi (o più) sono rossi (sopra i 3 sigma) allora il colore dell'ultimo punto è giallo
- altrimenti colore verde
In allegato potete trovare una tabella che serve da esempio, ho creato il seguente script ma senza successo:
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: Colore sugli indicatoriPenso che questo codice faccia quello che vuoi:
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: Colore sugli indicatoriRimango confuso. Tuttavia, data la tabella dati che hai fornito, che sembra essere una tabella che contiene i risultati di ciò che stai tentando di calcolare, si possono facilmente colorare le celle per la colonna Indicateur

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>oppure puoi creare un report separato</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: Colore sugli indicatoriCiao, grazie per la risposta, funziona bene su questa base di test!
Sto cercando di generalizzare questo script quando ho più articoli. Gli indicatori di colore vengono creati per articolo.
Utilizzo il seguente script ma non ottengo il risultato finale corretto:
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 );
);
);Il risultato ottenuto:

La riga 18 dovrebbe essere di colore giallo perché ci sono 3 punti rossi consecutivi per l'articolo B...
Re: Colore sugli indicatoriEcco il mio approccio

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: Colore sugli indicatoriGrazie per la tua risposta
Funziona ma non esattamente come dovrebbe.
Ho provato ad apportare modifiche al secondo ciclo if ma non riesco a trovare la soluzione.
Di seguito è riportato il risultato esatto che vorrei ottenere:

Re: Colore sugli indicatoriIl mio ultimo script dava per scontato che volessi solo l'ultima riga di una serie per mantenere il colore calcolato. Per realizzare la tua ultima specifica, ho appena commentato le righe che reimpostano i colori se lo script determina che non è l'ultima riga della 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: Colore sugli indicatoriNon sono sicuro di come questo sia ancora correlato alla domanda iniziale, ma c'è un'opzione leggermente diversa per creare la colonna dell'indicatore
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"
);
)
);