在热图中使用2种或更多cellnote颜色。2 R

在热图中使用2种或更多cellnote颜色。2 R,r,gplots,R,Gplots,我目前正在制作一个使用复杂离散色标(大约34种不同颜色)的热图。有些颜色是深色的,而有些是浅色的。我用heatmap.2()函数的cellnote参数标记单元格。由于某些单元格的背景颜色非常暗,因此当使用黑色cellnote颜色时,无法看到单元格标签。同样,当使用较浅的cellnote颜色时,无法看到背景颜色较浅的单元格中的标签。我想知道是否有可能在使用'heatmap.2()'函数生成的单个热图中使用不同的cellnote颜色。下面是一个小例子: library(gplots) x <-

我目前正在制作一个使用复杂离散色标(大约34种不同颜色)的热图。有些颜色是深色的,而有些是浅色的。我用
heatmap.2()
函数的
cellnote
参数标记单元格。由于某些单元格的背景颜色非常暗,因此当使用黑色cellnote颜色时,无法看到单元格标签。同样,当使用较浅的cellnote颜色时,无法看到背景颜色较浅的单元格中的标签。我想知道是否有可能在使用'heatmap.2()'函数生成的单个热图中使用不同的cellnote颜色。下面是一个小例子:

library(gplots)
x <- cbind(c(0.5, 1.5), c(1.5, 0.5))
pal <- c("darkblue", "lightblue")
heatmap.2(
    x,
    Rowv = FALSE,
    Colv = FALSE,
    dendrogram = "none",
    key = FALSE,
    trace = "none",
    col = pal,
    breaks = seq(0, 2),
    cellnote = x,
    notecol = "black",
    notecex = 2
)
库(gplots)

那么。。。显然,您可以将一个矩阵传递给
notecol
参数lol。起初我认为这是不可能的,因为在文档中它说了“string”,但我不想在之前尝试。然而,出于某种原因,我似乎不得不反转颜色字符矩阵的列以实际获得所需的结果?这有点奇怪,但它是有效的:

notemat <- cbind(c("white", "black"), c("black", "white"))
heatmap.2(
    x,
    Rowv = FALSE,
    Colv = FALSE,
    dendrogram = "none",
    key = FALSE,
    trace = "none",
    col = pal,
    breaks = seq(0, 2),
    cellnote = x,
    notecol = apply(notemat, 2, rev),
    notecex = 2
)
记事本