R ggplot2 - Wie kann ich angeben, out-of-bounds-Werte' Farbe
In der Handlung erzeugt, indem Sie den folgenden code möchte ich ändern, um die Farben so, dass alle Werte < 0.6 sind die gleichen wie die "low" - Farbe und alle Werte, die größer als 1 sind die "hohen" Farbe.
Wie steht der Farbverlauf erstreckt sich über den gesamten numerischen Bereich der Daten. Ich habe versucht, hinzufügen von Grenzen, aber das macht alle out-of-bounds-Wert die gleiche Farbe wie die NA-Werte, das ist nicht das, was ich will, weil ich brauche, fehlt NA-Werte deutlich-stick aus und sehen nicht die gleiche Farbe wie die out-of-bounds-Werte <0.6.
Ich bin davon überzeugt, dass die Antwort mit der oob -, Pausen-Argumente haben aber keinen Erfolg hatten, bekommen es zu arbeiten.
library(ggplot2)
a = rnorm(17*17, 0.733,0.21)
qcMat = matrix(a, ncol = 17)
qcMat[qcMat> 1] = 1
#qcMat contains values between 0 and 1 and some NAs
m = melt(t(qcMat))
m$Var2 <- with(m,factor(Var2, levels = rev(sort(unique(Var2)))))
ggplot(m, aes(as.factor(Var1), Var2, group=Var2)) +
geom_tile(aes(fill = value)) +
geom_text(aes(fill = m$value, label = round(m$value, 2))) +
scale_fill_gradient(low = "red", high = "green") +
xlab("") + ylab("") + ggtitle(paste("biscuit:", biscuit_id, "- QC", sep = " "))
- Sie schreiben, " alle Werte, die größer als 1 sind die "hohen" Farbe " und "qcMat enthält Werte zwischen 0 und 1 und einige NAs'. Warum verwenden Sie 1 als Grenze, wenn man keine 1 in Ihren Daten?
- die generierten Daten für den Zweck dieses snippet ist nicht ein getreues Spiegelbild der realen Daten auf, mit denen ich arbeite, aber es ist ziemlich nahe. Außerdem wurde die Entfernung der dishMat.
- Sie könnten auch legen Sie die
na.value
wie diese:scale_fill_gradient(low = "red", high = "green", na.value = "hotpink")
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Sie sagte sich selbst, Sie wollen die
oob
argument in derscale_fill_gradient
. Zum spannen der Werte, die Sie verwenden können, squish von der Waage Paket (scales
installiert ist, wennggplot2
installiert ist):und später
squish
in diesem Kontext wandelt Klemmen alle Werte innerhalb der min-und max-derlimits
argument. d.h., wenn der Wert < min(limits), dann Wert = min(limits) sonst wenn Wert > max(limits), dann ist Wert = max(limits).Versuchen
geom_tile
unter:EDIT: Dann nicht verwenden, min, max, so werden wir bekommen 0.6-1 Bereich: