kbphoton的个人博客分享 http://blog.sciencenet.cn/u/kbphoton

博文

R语言做heatmap的坐标问题

已有 3654 次阅读 2016-10-28 21:51 |系统分类:科研笔记

这两天用R做heatmap,完成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函数的纵坐标方向相反。heatmap的纵坐标是从上向下的,而points函数的纵坐标是从下往上的。将纵坐标做相应变换后,终于得到了正确答案。将这一点记下来,以备后查。



https://wap.sciencenet.cn/blog-1268076-1011496.html


下一篇:R语言中对heatmap中的特定cell进行标记

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2021-10-17 14:11

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部