Farbzellen basierend auf dem FormelergebnisHallo allerseits,
Ich habe eine Spalte (nennen wir sie Indikator) mit einer Formel darin, die eine 0 oder eine 1 zurückgibt.
Im Moment weiß ich, wie man das macht:
formulaResult = :Indicator << Get Values;
:Indicator << Color Cells( "red", Loc(formulaResult==1) );
Was ich aber wirklich möchte, ist, dass die Datentabelle dynamisch reagiert: Wenn ich die Daten so ändere, dass der Indikator auf 0 (falsch) wechselt, möchte ich nicht, dass die Zelle mehr hervorgehoben wird, und wenn ich weitere Daten hinzufüge Um die Tabelle und die Formel zu berechnen, möchte ich die Einsen hervorheben.
Ich kann nicht herausfinden, wie das mit Farbzellen geht. Ich dachte, dass vielleicht eine seltsame Implementierung der Spalteneigenschaft „Farbverlauf“ funktionieren könnte, aber nachdem ich eine Weile damit herumgespielt hatte, konnte ich nicht das gewünschte Ergebnis erzielen. Auf der Suche nach ein paar Ideen.
Michael
Betreff: Zellen basierend auf dem Formelergebnis färbenHier ist der gleiche Ansatz mit einer Weißfärbung Anders Klausel. Die ausgeblendete Spalte ist hier standardmäßig numerisch, daher müssen sowohl Then als auch Else etwas Numerisches zurückgeben, z. B. einen fehlenden Wert.
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)
);
Betreff: Zellen basierend auf dem Formelergebnis färbenDieser Ansatz funktioniert für mich, es sei denn, Sie ändern die Gewichte. Ich dachte, ich könnte einfach eine Anfrage hinzufügen, um den else-Parameter in der If()-Anweisung auf Color Cells("White",Row()) zu setzen, aber das scheint nicht zu funktionieren.
Außerdem ist für jeden Parameter, der Spezifikationsgrenzen hat, eine neue Spalte erforderlich. Ich vermute jedoch, dass wir eine kreative Formel schreiben könnten, die alle Spalten durchläuft, nach einer Spalteneigenschaft „Spezifikationsgrenzen“ sucht und, wenn sie eine solche findet, die entsprechenden Spalten färbt ? Zumindest die zusätzlichen Spalten werden ausgeblendet.
Betreff: Zellen basierend auf dem Formelergebnis färbenVielleicht nicht offensichtlich, aber Sie finden diesen Ansatz vielleicht weniger „ungeschickt“:
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)
);Betreff: Zellen basierend auf dem Formelergebnis färbenAbsolute Zustimmung.Sie sollten hierfür unbedingt eine Funktionsanfrage an support@jmp.com stellen.
Betreff: Zellen basierend auf dem Formelergebnis färbenDas ist umständlich und es sollte in JMP eine direktere/offensichtlichere Möglichkeit geben, dies zu tun, aber diese Lösung kann funktionieren. Danke schön.
Betreff: Zellen basierend auf dem Formelergebnis färbenIm Grunde täusche ich also nur einen Farbverlauf vor, der über ein kleines Fenster verläuft.Für nur zwei Farben benötigen Sie also nur 4 Punkte. 0, eine Zahl sehr nahe bei 0, eine Zahl sehr nahe bei 1 und 1. Wenn Sie mehr als zwei Farben wünschen, müssen Sie an jedem Punkt in Ihrem gewünschten Bereich Werte von 0 bis 1 berechnen.Wenn Sie beispielsweise 110 möchten, müssen Sie zwei Werte bei 10/35 und 10/35+.0000001 hinzufügen
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);
Betreff: Zellen basierend auf dem Formelergebnis färbenEntschuldigung. Diese Lösung ermöglicht es mir nicht, Werte außerhalb eines interessierenden Bereichs mit einer Farbe (z. B. Rot) und innerhalb des interessierenden Bereichs mit einer anderen Farbe (z. B. Weiß) einzufärben. Diese Col-Min-, Col-Mean-, Col-Max-Lösung scheint eine Möglichkeit zu sein, einfach einige Standardwerte einzugeben, um einen Farbverlauf zu erstellen. Was daran attraktiv war @vince_faller Die Lösung besteht darin, dass ein benutzerdefinierter Farbverlauf erstellt wird, der (glaube ich) genau zwei Farben auf die Spalte zwingt. Was mich noch nicht reizt, ist, dass ich nicht verstehe, wie ich genau steuern kann, wann ich von meiner „guten“ Farbe zu meiner „schlechten“ Farbe wechsle.
Betreff: Zellen basierend auf dem Formelergebnis färbenSie können die Berechnungen mit Colmin, Colmax und Colmean durchführen:
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);Betreff: Zellen basierend auf dem Formelergebnis färbenDas ist näher. Es scheint, dass der grüne Bereich bei ca. liegt. 92-127 für dieses Beispiel. Angenommen, mein Spezifikationsbereich liegt zwischen 100 und 135. Wie führe ich die Berechnungen durch, um die Endpunkte zu ermitteln, die in die Bereichsfunktion in „Farbverlauf“ eingespeist werden sollen? (Und dann habe ich das Problem, anderen JMP-Benutzern hier erklären zu müssen, warum sie zwei Zahlen, also 100 und 135, in drei Werte umwandeln müssen, um die Range-Funktion zu erfüllen.)
Betreff: Zellen basierend auf dem Formelergebnis färbenWarum funktioniert der Farbverlauf nicht?
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);

Betreff: Zellen basierend auf dem Formelergebnis färbenNur eine Woche später taucht dieses Problem bei mir erneut auf.
Die neue Anwendung besteht darin, dass wir in einer Reihe von Situationen Werte kennzeichnen möchten, die außerhalb der Spezifikation liegen. Weder Farbverläufe noch Wertfarben leisten hier gute Dienste. Wir können sicherlich eine neue Spalte und Farbe basierend auf 0 vs. 1 erstellen, aber wenn ich mehrere Variablen mit Spezifikationen erzwingen muss, muss ich für jede Variable eine neue Spalte erstellen. Das wird schnell unhandlich! Ich hätte gerne eine bessere Lösung.
Betreff: Zellen basierend auf dem Formelergebnis färbenFür die Fehlerzählung kann ich damit arbeiten. Manchmal habe ich auch kontinuierliche Variablen, mit denen ich arbeiten muss, und diese Lösung funktioniert dort nicht, aber vielleicht würde der Farbverlauf in dieser Situation gut funktionieren.
Betreff: Zellen basierend auf dem Formelergebnis färbenErstellen Sie eine Liste, die die Wertfarben nach Bedarf definiert, z. B. Weiß für 0 und Rot für ganze Zahlen > 0. Die Eigenschaft „Wertfarben“ scheint zu erfordern, dass jeder einzufärbende Wert seine eigene „Zuweisung“ hat. Daher müssen alle möglichen Werte von „Defekte“ in der Liste enthalten sein.
Beispiel:
// 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)
);
Betreff: Zellen basierend auf dem Formelergebnis färbenMarkieren,
Natürlich. Es macht Sinn, dass ich einfach eine weitere Indikatorspalte erstellen könnte. Das einzige Problem besteht darin, dass dadurch die Zellen in der Indikatorspalte eingefärbt werden, anstatt die Anzahl der Fehler hervorzuheben, wie folgt:

Was ich bevorzugen würde, ist Folgendes:

Irgendwelche Ideen?
Betreff: Zellen basierend auf dem Formelergebnis färbenSie müssen lediglich die in der Spaltenformel verwendete Logik ändern, zum Beispiel :data > 0.Betreff: Zellen basierend auf dem Formelergebnis färbenEindrucksvoll! Ich glaube, ich habe mein Problem etwas zu stark vereinfacht. Versuchen wir es mit dieser Verallgemeinerung.
Jetzt ist mein Indikator eine Anzahl von Fehlern (0, 1, 2, 3, 4 usw.). Wie kann ich alles >=1 mit derselben Farbe einfärben und die Nullen nicht einfärben?
Betreff: Zellen basierend auf dem Formelergebnis färbenProbieren Sie die Eigenschaft „Wertfarben“ mit aktivierter Option „Zellen nach Wert färben“ aus.
Beispiel:
// 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);