Na wykresie wygenerowanym poniższym kodem chciałbym zmienić kolory tak, aby wszystkie wartości < 0.6 były takie same jak "niski" kolor i wszystkie wartości większe niż 1 to "wysoki" kolor.R ggplot2 - Jak określić kolor poza granicami
W stanie zgodnym gradient kolorów rozciąga się na cały zakres liczbowy danych. Próbowałem dodawać limity, ale to sprawia, że wszystkie wartości poza boiskiem są tego samego koloru, co wartości NA, co nie jest tym, czego potrzebuję, ponieważ potrzebuję brakujących wartości NA, aby wyraźnie się wystawały i nie wyglądają tego samego koloru, co wartości poza granicami < 0.6.
Jestem przekonany, że odpowiedź brzmi: oob, łamie argumenty, ale nie udało im się sprawić, by działało.
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 = " "))
Piszesz „wszystkie wartości większe niż 1 są«wysokie»kolor” i " qcMat zawiera wartości od 0 do 1 i niektóre NA. Po co używać 1 jako limitu, gdy nie masz żadnych 1 w swoich danych? – Henrik
@Henrik dane wygenerowane do celów tego fragmentu nie są prawdziwym odzwierciedleniem rzeczywistych danych, nad którymi pracuję, ale są bardzo blisko. Naprawiono również usuwanie dishMat. – HoaxKey