我正在尝试使用相关矩阵和p值矩阵在R中构建热图。
我使用这个tutorial来构建热图而不会出现问题。它完美地运作。我甚至可以从右侧单元格中的第二个矩阵(p值矩阵)中引入一些值 但是,当我尝试突出显示相应的单元格时,它不起作用。我用这个code来生成边框。 我使用RStudio v0.97包gplots,RColorBrewer。 代码是:
library(gplots)
library(RColorBrewer)
my_palette <- colorRampPalette(c("red", "yellow", "green"))(n = 299)
nx = 5
ny = 10
mat1 <- matrix(rnorm(nx*ny,100,50),nx,ny)
mat2 <- mat1>150 #matrix used for the example instead of the p value matrix
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)
} #this is the function to make the rectangles/borders
heatmap.2(mat1,
Rowv = FALSE, # don't reorganize columns
cellnote = mat2, # check correspondance between rectangles and mat2 values
main = "Correlation", # heat map title
notecol="black", # change font color of cell labels to black
notecex=0.5, # change the scaling of the cell labels
density.info="none", # turns off density plot inside color legend
trace="none", # turns off trace lines inside the heat map
margins =c(12,9), # widens margins around plot
col=my_palette, # use on color palette defined earlier
dendrogram="row", # don't draw a row dendrogram
Colv="NA", # turn off column clustering
add.expr = {makeRects(mat2,"black")}) #add the borders
我认为使用makeRects
函数或通过heatmap.2
函数重新排序行有问题。矩形出现在热图中,但它们不在正确的位置。我整天都在摸不着头脑而没有发现什么问题。
有什么建议吗?
答案 0 :(得分:0)
如果您为人们提供了一些运行代码的示例数据,那将会很有帮助,您还应该指定运行代码所需的任何软件包。例如,
library(gplots)
library(Hmisc)
x <- matrix(rnorm(100), ncol = 5)
y <- matrix(rnorm(100), ncol = 5)
keep <- rcorr(x, y)
matrr <- keep$r
matrp <- keep$P
在makeRects()
函数中,您引用了nx
和ny
,但它们从未定义过。
在致电heatmap.2()
时,您引用matrl
,但从未定义过。
如果您在问题中添加这三个对象的定义,我们可以解决您的绘图问题。