Definieren eines benutzerdefinierten Farbverlaufs in der Graph Builder-Heatmap mit JSLIch habe ein Modell mit acht Faktoren und vier Antworten. Ich möchte eine Heatmap erstellen, die zeigt, welche Faktoren für welche Antworten von Bedeutung sind.Ich möchte meine eigene Farbskala definieren können, zum Beispiel:
<0,0001 bis 0,01 = orange
0,001 bis 0,05 = rot
> 0,05 = weiß
Ich habe mit dem Farbverlauf in Graph Builder herumgespielt, weiß aber nicht, wie ich das machen soll, was ich will. Vielleicht handelt es sich technisch gesehen nicht mehr um einen Farbverlauf, aber es scheint, dass es möglich sein sollte.Das Bild unten ist so nah wie möglich.

Hier ist ein Ausschnitt aus dem Skript. Der vollständige Datensatz mit gespeichertem Skript ist beigefügt.
gradient(
{Color Theme( "Green Yellow Red" ), Scale Values( [0 0.05 .] ),
Width( 9 ), Range Type( "Exact Data Range" ),
Reverse Gradient( 1 ), Discrete Colors( 1 ),
N Labels( 5 )}
)
Für Vorschläge wäre ich dankbar.
-Tom
Betreff: Definieren eines benutzerdefinierten Farbverlaufs in der Graph Builder-Heatmap mit JSLSuper, danke für die ausführliche Erklärung, Tom!
Betreff: Definieren eines benutzerdefinierten Farbverlaufs in der Graph Builder-Heatmap mit JSLHallo Kira,
Vielen Dank für Ihre Hilfe.Das hat mir wirklich geholfen, dorthin zu gelangen, wo ich hin wollte.
Ich werde für andere, die vielleicht etwas Ähnliches versuchen, etwas detaillierter darauf eingehen, wie man das macht, da ich in der JMP-Dokumentation keine Details dazu finden konnte.
Wenn Sie mit der rechten Maustaste auf die Heatmap-Legende klicken, wählen Sie „Verlauf“, klicken Sie dann auf das Farbthema und dann auf den Drehknopf, um „Benutzerdefiniertes Farbthema“ zu öffnen.Dies ist das Setup, das letztendlich für mich funktioniert hat.

Es scheint hier, dass es nur vier Punkte gibt, die den Gradienten bei 0, 10, 50 und 100 % definieren, aber das stimmt nicht.Wenn Sie nur diese vier Punkte definieren, erhalten Sie dazwischen Farbverläufe, z. B. Rot bis Orange von 0-10 %. Wenn Sie einen Übergang von Rot zu Orange bei 10 % wünschen, müssen Sie sowohl einen roten als auch einen orangefarbenen Punkt bei 10 % definieren.Die Benutzeroberfläche zeigt dort nur eine Markierung an, da wir sie für etwas verwenden, für das sie nicht entwickelt wurde.
Um drei diskrete Farbbereiche zu erhalten, müssen Sie sechs Punkte definieren, obwohl Sie oben aufgrund von Überlappungen nur vier sehen.Die obige Visualisierung ist zwar hilfreich nach dem Fakt , ich konnte es nicht verwenden, um durch Verschieben der Schieberegler das zu erreichen, was ich wollte. Ich musste es direkt skripten. So sah mein Code aus:
{Color Theme(
{"White to Red p-Value", 2051,
/*0%->red 10%->red 10%->orange 50%->orange 50%->white 100%->white */
{{255,0,0},{255,0,0},{255,165,0},{255,165,0},{255,255,255},{255,255,255}},
{.0000 , 0.1 , 0.1 , 0.5 , 0.5 , 1 }
}Wie Kira betonte, ist es wichtig, den Skalierungsfaktor richtig zu machen. Die Werte im Farbthema reichen von 0 bis 1 (0 bis 100 % der definierten Skala).Der Skalierungsfaktor „ordnet“ die Farbskala Ihrer speziellen Variablen zu – in meinem Fall 0 bis 0,1.
Ich kann mir andere Fälle vorstellen, in denen ich kontinuierliche Daten nehmen und sie Farbschritten und nicht Farbverläufen zuordnen möchte. Vielleicht gibt es also eine bessere Möglichkeit, dies in JMP zu tun, oder einfach nur eine Einstellung, die mir fehlt. (Ich habe es auch so gemacht, wie Kira es vorgeschlagen hat, und eine neue Kolumne erstellt – das ist definitiv auch eine vernünftige Option.)
Meine endgültige Ausgabe sieht so aus, wobei in jeder Zelle die F-Verhältnisse angezeigt werden:

In der angehängten Datei befindet sich der Originaldatensatz. Das erste Skript führt das Modell aus. Der zweite geht in den Bericht, extrahiert die p-Werte und f-Verhältnisse und erstellt die Heatmap.Ich wünschte, ich hätte genug über das Navigieren in Berichtsbaumstrukturen verstanden, um das Heatmap-Skript „intelligent“ genug zu machen, um die Tabelle „Effekttest“ überall im Bericht zu finden.Derzeit ist das fest codiert, sodass das Skript wahrscheinlich nur mit diesem bestimmten Bericht funktioniert.
dt_pvals = report(fls)[outlinebox(1)][TableBox(6)] << make combined data table;
Ich denke, dass dies ein hilfreiches Visualisierungstool sein könnte, wenn mit mehreren Faktoren und Reaktionen gearbeitet wird.
-Tom
Betreff: Definieren eines benutzerdefinierten Farbverlaufs in der Graph Builder-Heatmap mit JSLHallo Tom!
Sie können in JMP Ihre eigenen Farbthemen definieren. Probieren Sie so etwas aus:
Preferences( Add Color Theme(
{"White to Red p-Value", 2051, {{255, 255, 255}, {255, 255, 255}, {252, 187,
161}, {252, 146, 114}, {251, 106, 74}, {239, 59, 44}, {203, 24, 29}, {165,
15, 21}, {103, 0, 13}}, {0, 0.95, 0.96,
0.97, 0.98, 0.99, 0.995,
0.999, 1}}
),
);Die Farben werden in RGB-Werten codiert (z. B. {255, 255, 255} ist weiß) und am Ende werden die gewünschten Inkremente angegeben (z. B. werden die ersten 95 % der Farbskala weiß sein, wie sie derzeit definiert ist). Dies ist ein erster grober Entwurf, daher müssen Sie möglicherweise die Abstufungen oder Farben nach Ihren Wünschen ändern. Beachten Sie, dass dadurch ein neues Farbthema erstellt wird, das Sie in jedem Diagramm verwenden können. Stellen Sie sicher, dass Sie im Diagramm „Min“ und „Max“ für die Farbskala angeben, da dieser Farbverlauf sonst nicht bei 0,05 orange wird:
gradient(
{Color Theme(
{"White to Red p-Value", 2051, {{255, 255, 255}, {255,
255, 255}, {252, 187, 161}, {252, 146, 114}, {251, 106,
74}, {239, 59, 44}, {203, 24, 29}, {165, 15, 21}, {103,
0, 13}}, {0, 0.95, 0.96, 0.97, 0.98, 0.99, 0.995, 0.999,
1}}
), Scale Values( [0 1] ), Reverse Labels( 1 )}
)Allerdings noch eine Randbemerkung eines Statistikers: Eigentlich spielt es keine Rolle, wie klein der p-Wert ist, sobald er unter dem Schwellenwert (z. B. 0,05) liegt. Das Einzige, was Sie interessieren sollte, ist: Ist es signifikant (z. B. weniger als 0,05) oder nicht? Daher sollte eine einfache Formelspalte, die angibt, ob der p-Wert kleiner als 0,05 ist oder nicht, und die entsprechende Einfärbung für Ihre Anwendung vollkommen in Ordnung sein.
Hoffentlich hilft das!
Kira