在 heatmap.2 R 中使用 2 种或多种 cellnote 颜色
Using 2 or more cellnote colors in heatmap.2 R
我目前正在研究使用复杂的离散色标(大约 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
)
期望的输出是在左上角和右下角的单元格中有白色的单元格注释,同时在其他单元格中保留黑色的单元格注释。我预计这可能需要修改函数的 source code。但是,我一直没能想出解决办法。
好吧...显然您可以将矩阵传递给 notecol
参数大声笑。我认为这最初是不可能的,因为在文档中它说 '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
)
我目前正在研究使用复杂的离散色标(大约 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
)
期望的输出是在左上角和右下角的单元格中有白色的单元格注释,同时在其他单元格中保留黑色的单元格注释。我预计这可能需要修改函数的 source code。但是,我一直没能想出解决办法。
好吧...显然您可以将矩阵传递给 notecol
参数大声笑。我认为这最初是不可能的,因为在文档中它说 '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
)