Celle colorate in base al risultato della formulaCiao a tutti,
Ho una colonna (chiamiamola Indicatore) con una formula che restituisce uno 0 o un 1.
In questo momento so come fare:
formulaResult = :Indicator << Get Values;
:Indicator << Color Cells( "red", Loc(formulaResult==1) );
Ma quello che voglio davvero fare è che la tabella dei dati risponda dinamicamente: se cambio i dati in modo che l'indicatore passi a 0 (falso), non voglio più che la cella si evidenzi e se aggiungo più dati a la tabella e la formula calcola, voglio che gli 1 siano evidenziati.
Non riesco a capire come farlo con Color Cells. Ho pensato che forse una strana implementazione della proprietà della colonna Color Gradient potesse funzionare, ma dopo averci giocato per un po' non sono riuscito a ottenere il risultato che volevo. Alla ricerca di alcune idee.
Michael
Re: celle colorate in base al risultato della formulaEcco lo stesso approccio con una colorazione bianca Altro clausola. La colonna nascosta qui è numerica per impostazione predefinita, quindi sia Then che Else devono restituire qualcosa di numerico, ad esempio un valore mancante.
dt = Open("$SAMPLE_DATA\Big Class.jmp");
dt << New Column("highlight cells",
Formula(If(100 < :weight < 135, :weight << color cells("Red", Row()); .,
:weight << color cells("White", Row()); .)),
Hide(1)
);
Re: celle colorate in base al risultato della formulaQuesto approccio funziona per me a meno che tu non cambi i pesi. Ho pensato di poter semplicemente aggiungere una richiesta per impostare il parametro else nell'istruzione If() su Color Cells("White",Row()) ma non sembra funzionare.
Inoltre richiede una nuova colonna per ogni parametro che ha limiti di specifica, anche se suppongo che potremmo scrivere una formula creativa che itera attraverso tutte le colonne, controlla la proprietà della colonna Limiti di specifica e, se ne trova una, va a colorare le colonne appropriate ? Almeno le colonne extra sono nascoste.
Re: celle colorate in base al risultato della formulaForse non ovvio, ma potresti trovare questo approccio meno "goffo":
Names Default To Here(1);
dt = Open("$SAMPLE_DATA\Big Class.jmp");
dt << New Column("highlight cells",
Formula(If(100 < :weight < 135, :weight << color cells("Red", Row()); ., .)),
Hide(1)
);Re: celle colorate in base al risultato della formulaAssolutamente d'accordo.Dovresti assolutamente inserire una richiesta di funzionalità per questo all'indirizzo support@jmp.com.
Re: celle colorate in base al risultato della formulaQuesto è goffo e dovrebbe esserci un modo più diretto/ovvio per farlo in JMP, ma questa soluzione può funzionare. Grazie.
Re: celle colorate in base al risultato della formulaQuindi in pratica sto solo fingendo una sfumatura di colore che sfuma su una piccola finestra.Quindi per soli due colori ti servono solo 4 punti. 0, un numero molto vicino a 0, un numero molto vicino a 1 e 1. Se volessi più di 2 colori dovresti calcolare i valori da 0 a 1 in ogni punto dell'intervallo che desideri.per esempio se volessi 110, dovresti aggiungere due valori a 10/35 e 10/35+.0000001
Names Default to Here(1);
dt = Open("$SAMPLE_DATA\Big Class.jmp");
Column(dt, "weight") << Set Property(
"Color Gradient" ,
{{"Something", 16387,
{{255, 0, 0}, {0, 255, 0}, {0, 255, 0}, {255, 0, 0}}, //list of colors
{0, .00000001, .9999999, 1}}, //corresponding locations from 0 to 1
Range( {100, 135, 117.5} ) //minimum, maximum and center. 0, 1, and .5 is another way to look at it
}
);
Column(dt, "weight") << Color Cell By Value(1);
Re: celle colorate in base al risultato della formulaScusa. Questa soluzione non mi consente di colorare i valori al di fuori di un intervallo di interesse con un colore (ad esempio, rosso) e all'interno dell'intervallo di interesse con un colore diverso (ad esempio, bianco). Questa soluzione col min, col mean, col max sembra essere un modo per inserire semplicemente alcune impostazioni predefinite per fare un gradiente. Cosa era attraente @vince_faller La soluzione di è che crea un gradiente personalizzato che forza esattamente due colori (credo) sulla colonna. Ciò che non mi attrae ancora è che non capisco come controllare con precisione quando passo dal mio colore "buono" al mio colore "cattivo".
Re: celle colorate in base al risultato della formulaPuoi fare i calcoli con colmin, colmax e colmean:
frr_min = col min(:FRR);
frr_max = col max(:FRR);
frr_avg = col mean(:FRR);
// Color FRR with a gradient
column(hlt_dt, "FRR") << Set Property( "Color Gradient", {"Light Spectral", Range(expr(frr_min), expr(frr_max), expr(frr_avg))});
column(hlt_dt, "FRR") << color cell by value(1);Re: celle colorate in base al risultato della formulaQuesto è più vicino. Sembra che l'intervallo verde sia di ca. 92-127 per questo esempio. Supponiamo che la mia gamma di specifiche sia 100-135. Come faccio i calcoli per capire gli endpoint da inserire nella funzione Intervallo in Gradiente di colore? (E poi ho il punto dolente di dover spiegare agli altri utenti di JMP qui perché hanno bisogno di trasformare due numeri, cioè 100 e 135, in tre valori per soddisfare la funzione Range.)
Re: celle colorate in base al risultato della formulaPerché il gradiente di colore non funziona?
Names Default to Here(1);
dt = Open("$SAMPLE_DATA\Big Class.jmp");
Column(dt, "weight") << Set Property(
"Color Gradient" ,
{{"Something", 16387, {{255, 0, 0}, {255, 0, 0}, {0, 255, 0}, {0, 255,
0}, {255, 0, 0}, {255, 0, 0}}, {0, 0.33333333, 0.33333334,
0.666666666666, 0.666666666667, 1}}, Range( {64, 172, 105} )
}
);
Column(dt, "weight") << Color Cell By Value(1);

Re: celle colorate in base al risultato della formulaQuesto problema si ripresenta già per me solo una settimana dopo.
La nuova applicazione è che abbiamo una serie di situazioni in cui vogliamo contrassegnare i valori che non rientrano nelle specifiche. Né il gradiente di colore né i colori di valore fanno un ottimo lavoro in questo. Possiamo certamente creare una nuova colonna e un nuovo colore basato su 0 vs 1, ma se ho più variabili con specifiche da applicare, dovrò creare una nuova colonna per ogni variabile. Questo diventerà ingombrante rapidamente! Vorrei una soluzione migliore.
Re: celle colorate in base al risultato della formulaPer contare i difetti posso lavorare con questo. A volte ho anche variabili continue con cui devo lavorare e questa soluzione non funzionerà lì, ma forse il gradiente di colore funzionerebbe bene in quella situazione.
Re: celle colorate in base al risultato della formulaCrea un elenco che definisca i colori dei valori nel modo desiderato, ad esempio bianco per 0 e rosso per numeri interi > 0. La proprietà Value Colors sembra richiedere che ogni valore da colorare abbia una propria "assegnazione". Pertanto, tutti i possibili valori di "Difetti" devono essere inclusi nell'elenco.
Esempio:
// Make list that defines the Value Colors
n = 10; //set highest conceivable nr of defects
vc = {0 = 2}; // White cell color for no defects
For(i = 1, i <= n, i++,
Insert Into(vc, Eval Expr(Expr(i) = 19)) // red for defects 0
);
// Example table
dt = New Table("test",
Add Rows(50),
New Column("Defects", Formula(Random Integer(0, 3)), Set Property("Value Colors", vc), Color Cell by Value)
);
Re: celle colorate in base al risultato della formulaSegno,
Ovviamente. Ha senso che potrei semplicemente creare un'altra colonna di indicatori. L'unico problema è che questo colorerà le celle nella colonna dell'indicatore invece di evidenziare il numero di difetti, come questo:

Quello che preferirei è questo:

Qualche idea?
Re: celle colorate in base al risultato della formulaDevi solo cambiare la logica utilizzata nella formula della colonna, ad esempio :data > 0.Re: celle colorate in base al risultato della formulaEccezionale! Penso di aver semplificato un po' il mio problema. Proviamo questa generalizzazione.
Ora il mio indicatore è ora un conteggio dei difetti (0, 1, 2, 3, 4, ecc.). Come posso colorare tutto >=1 con lo stesso colore e non colorare gli zeri?
Re: celle colorate in base al risultato della formulaProva la proprietà "Colori valore" con "Colore celle per valore" selezionato.
Esempio:
// Example table
dt = New Table("test",
Add Rows(10),
New Column("data", Formula(Random Uniform())),
New Column("Indicator",
Set Property("Value Colors", {. = -12632256}),
Formula(:data < 0.5),
Color Cell by Value
)
);
// Test if dynamic
Wait(1);
:data << eval formula;
Wait(1);
dt << add rows(10);