我的热图范围从-100到100.我希望任何低于0的值都是红色,而高于0的值是蓝色渐变。
我已经看过获得红色和蓝色渐变的例子,但红色不是常红色。
到目前为止我已尝试过:
bk = c(seq(-100,-0.1,length=1), seq(-0.1,0.1,length=1), seq(0.1,100,length=100))
rc1 <- colorRampPalette(colors = c("red"))
rc2 <- colorRampPalette(colors = c("blue"))(length(bk)-1)
hmcols <- c(rc1, rc2)
但我收到了错误
"Error in image.default(1:nc, 1:nr, x, xlim = 0.5 + c(0, nc), ylim = 0.5 + :
must have one more break than colour"
答案 0 :(得分:3)
这是一个这样的情节的例子
#breaks
bk <- c(-100,seq(0,100,by=10))
#colors (one less than breaks
mycols <- c("red",colorRampPalette(colors = c("white","blue"))(length(bk)-2))
#sample data
z <- matrix(runif(25*25, -100, 100), ncol=25)
#plot
heatmap(z, col=mycols, breaks=bk, scale="none")
请注意,为了获得您想要的特定颜色,我们使用一次调用colorRampPalette
传递您想要在其间转换的三种颜色(假设白色是中间范围的可接受的中性色)。我们还使用scale="none"
,因为默认情况下它会缩放0到1之间的值。因此,如果要在原始值范围内保留中断,则需要禁用缩放。