【发布时间】:2014-05-14 11:51:47
【问题描述】:
在以下代码生成的图中,我想更改颜色,使所有
按原样,颜色渐变会延伸到数据的整个数字范围。我尝试添加限制,但这会使所有超出范围的值与 NA 值的颜色相同,这不是我想要的,因为我需要缺少 NA 值才能清楚地突出并且看起来与超出范围值
我确信答案是 oob,它打破了争论,但没有成功让它发挥作用。
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 = " "))
【问题讨论】:
-
你写'所有大于 1 的值都是“高”颜色'并且'qcMat 包含 0 和 1 之间的值和一些 NA'。当您的数据中没有任何 1 时,为什么要使用 1 作为限制?
-
@Henrik 为这个 sn-p 生成的数据并不是我正在处理的真实数据的真实反映,但它非常接近。还修复了 dissMat 的移除问题。
-
你也可以像这样设置
na.value:scale_fill_gradient(low = "red", high = "green", na.value = "hotpink")