我正在尝试在R中制作一个热图,其中标签文本是彩色的(表示数据点来自哪个组)。
我目前正在使用heatmap.2,但很乐意使用另一个包。
heatmap.2(data.matrix(data),trace = 'none', dendrogram='none',ColSideColors=col)
这个调用给了我沿着标签的彩色条(ColSideColors),但是我想让标签自己着色。
非常感谢!
答案 0 :(得分:3)
您需要创建一个包含col.axis
参数的新函数。这些是要使用的函数的行:
# there were four long pages of code before this section:
axis(1, 1:nc, labels = labCol, las = 2, line = -0.5, tick = 0, # original line
col.axis="green", # added argument
cex.axis = cexCol)
if (!is.null(xlab))
mtext(xlab, side = 1, line = margins[1] - 1.25)
axis(4, iy, labels = labRow, las = 2, line = -0.5, tick = 0, # original line
col.axis="green", # added argument
cex.axis = cexRow)
答案 1 :(得分:0)
我最近遇到了同样的问题,最后我使用mtext
来替换原来的axis
。以前的答案显示了axis
语句来绘制标签。但是,col.axis
只能指定一种颜色。要启用矢量颜色,
# axis(1, 1:nc, labels = labCol, las = 2, line = -0.5, tick = 0,
# cex.axis = cexCol )
mtext(side = 1, text = labCol, at = 1:nc, las = 2, line = 0.5,col = ClabColor, cex = cexCol)
# axis(4, iy, labels = labRow, las = 2, line = -0.5, tick = 0,
# cex.axis = cexRow )
mtext(side = 4, text = labRow, at = iy, las = 2, line = 0.5,col = RlabColor, cex = cexCol)
另外,请记住向函数ClabColor = "black", RlabColor = "black"
添加两个参数。默认颜色为黑色。
您需要注意的另一件事是,矢量颜色应遵循标签的顺序,这些标签在计算树状图时会被置换
答案 2 :(得分:0)
由于缺少评论权限,我无法回复lwz0203,但他们的代码不完整。您需要添加以下行:
if(is.vector(RlabColor)) {
RlabColor=RlabColor[rowInd]
}
(和ClabColor一样)
if(is.vector(ClabColor)) {
ClabColor=ClabColor[colInd]
}
在代码中的某个位置,或者当您使用颜色矢量时,您将获得与标签不匹配的着色。矢量labRow或labCol中的文本已经使用代码重新排序:
if (is.null(labRow))
labRow <- if (is.null(rownames(x)))
(1:nr)[rowInd]
else rownames(x)
else labRow <- labRow[rowInd]
所以我在同一个地方添加了RlabColor和ClabColor的重新排序。