||
如何对heatmap中的特定cell进行突出显示或标记?Google后在http://stackoverflow.com/questions/7978533/highlight-cells-in-heatmap网址得到以下方法:
set.seed(310366)
nx=5
ny=6
SOI=matrix(rnorm(nx*ny,100,50),nx,ny)
colnames(SOI)=paste("NAP_G0",sort(as.integer(runif(ny,10,99))),sep="")
rownames(SOI)=sample(2315101:(2315101+nx-1))
above150 = SOI>150
below30=SOI<30
makeRects <- function(tfMat,border){
cAbove = expand.grid(1:nx,1:ny)[tfMat,]
xl=cAbove[,1]-0.49
yb=cAbove[,2]-0.49
xr=cAbove[,1]+0.49
yt=cAbove[,2]+0.49
rect(xl,yb,xr,yt,border=border,lwd=3)
}
heatmap(t(SOI),Rowv = NA, Colv=NA, add.expr = { makeRects(above150,"red");makeRects(below30,"blue")})
我是想在cell中标记一个点,因此用points代替rect函数,但总是发现点的位置不对,仔细检查点的坐标后,发现是points函数总坐标方向和heatmap函数纵坐标方向相反,进行坐标校正后,点的位置就对了。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-20 14:30
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社