0
我有一个1941 x 119矩阵的值[-2,2],高度聚集在零附近。用于热图的非线性颜色梯度R
我想创建显示我已经与hclust发现簇热图。我想要使用渐变颜色渐变,以便数值范围从绿色变为红色,同时在中心变暗(或变浅)。问题在于数据聚集在零附近,像redgreen(n)这样的线性颜色斜坡和RColorBrewer无法捕捉到细微的变化并产生褪色的图。
我试图建立一个色阶使用“颜色面板”中的{gplots}和S形函数在我的数据来指定破发点,像这样:
library(gplots)
lower <- -1
upper <- 1
growth_rate <- 0.05
# Returns break pts b/w [-1,1]
sig <- function(x) {
return(lower + ((upper-lower)/(1+exp(-growth_rate*x))))
}
breaks <- sig(seq(-30, 30, by=1.0))
breaks <- append(-2, append(breaks, 2)) # Append min and max break pts
ramp <- colorpanel(n=length(breaks)-1, low="green", mid="black", high="red")
然后,我跑到我的热图:
# 'data' is a 1941 x 119 matrix
heatmap.2(data, main="Heatmap Sigmoid",col=ramp, trace='none', breaks=breaks)
任何人都知道的方式来建立一个色阶,可以显示所有得到扔进“黑”箱中(色调),这些值?
编辑:固定图像上传 – PanFrancisco