当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R heatmap 绘制热图


R语言 heatmap 位于 stats 包(package)。

说明

热图是一个假彩色图像(本质上是 image(t(x)) ),在左侧和顶部添加了树状图。通常,根据树状图施加的限制内的某些值集(行或列平均值)对行和列进行重新排序。

用法

heatmap(x, Rowv = NULL, Colv = if(symm)"Rowv" else NULL,
        distfun = dist, hclustfun = hclust,
        reorderfun = function(d, w) reorder(d, w),
        add.expr, symm = FALSE, revC = identical(Colv, "Rowv"),
        scale = c("row", "column", "none"), na.rm = TRUE,
        margins = c(5, 5), ColSideColors, RowSideColors,
        cexRow = 0.2 + 1/log10(nr), cexCol = 0.2 + 1/log10(nc),
        labRow = NULL, labCol = NULL, main = NULL,
        xlab = NULL, ylab = NULL,
        keep.dendro = FALSE, verbose = getOption("verbose"), ...)

参数

x

要绘制的值的数字矩阵。

Rowv

确定是否以及如何计算和重新排序行树状图。 dendrogram 或用于重新排序行树状图的值向量或 NA 来抑制任何行树状图(和重新排序)或默认情况下 NULL ,请参阅下面的“详细信息”。

Colv

确定是否以及如何对列树状图重新排序。与上面的 Rowv 参数具有相同的选项,此外,当 x 是方阵时,Colv = "Rowv" 意味着列应该与行相同地对待(因此,如果没有行树状图,则不会有一栏)。

distfun

用于计算行和列之间的距离(相异度)的函数。默认为 dist

hclustfun

RowvColv 不是树状图时,用于计算层次聚类的函数。默认为 hclust 。应该将 distfun 的结果作为参数,并返回一个可以应用 as.dendrogram 的对象。

reorderfun

function(d, w) 树状图和用于重新排序行和列树状图的权重。默认使用reorder.dendrogram

add.expr

调用 image 后将计算的表达式。可用于向绘图添加组件。

symm

逻辑指示x是否应该对称处理;仅当x 是方阵时才为真。

revC

逻辑指示列顺序是否应为 rev 来绘图,例如,对于对称情况,对称轴与往常一样。

scale

指示值是否应在行方向或列方向上居中和缩放的字符,或者不居中。如果 symm 为 false,则默认值为 "row",否则默认值为 "none"

na.rm

逻辑指示是否应删除 NA

margins

长度为 2 的数值向量,分别包含列名和行名的边距(请参阅 par(mar = *) )。

ColSideColors

(可选)长度为 ncol(x) 的字符向量,包含水平侧边栏的颜色名称,可用于注释 x 的列。

RowSideColors

(可选)长度为 nrow(x) 的字符向量,包含可用于注释 x 行的垂直侧边栏的颜色名称。

cexRow, cexCol

正数,用作行或列轴标签中的cex.axis。当前默认值仅分别使用行数或列数。

labRow, labCol

带有要使用的行和列标签的字符向量;这些默认分别为 rownames(x)colnames(x)

main, xlab, ylab

主、x 轴和 y 轴标题;默认为无。

keep.dendro

逻辑指示是否应将树状图保留为结果的一部分(当 Rowv 和/或 Colv 不为 NA 时)。

verbose

逻辑指示是否应打印信息。

...

传递给 image 的其他参数,例如 col 指定颜色。

细节

如果 RowvColv 是树状图,则它们将被尊重(并且不会重新排序)。否则,树状图计算为 dd <- as.dendrogram(hclustfun(distfun(X))) ,其中 Xxt(x)

如果其中之一是向量(‘weights’),则在行情况下,根据提供的值对适当的树状图进行重新排序,该值受到树状图施加的约束,由 reorder(dd, Rowv) 施加。如果默认情况下缺少其中一个,则相应树状图的排序将按行/列的平均值进行,即,在行的情况下为 Rowv <- rowMeans(x, na.rm = na.rm) 。如果其中之一是 NA ,则不会对相应的一侧进行重新排序。

默认情况下 ( scale = "row" ),行被缩放为均值为零和标准差为一。基因组绘图的一些经验证据表明这是有用的。

隐形的组件列表

rowInd

order.dendrogram 返回的行索引排列向量。

colInd

列索引排列向量。

Rowv

行树状图;仅当输入 Rowv 不为 NA 并且 keep.dendro 为 true 时。

Colv

柱树图;仅当输入 Colv 不为 NA 并且 keep.dendro 为 true 时。

注意

除非 Rowv = NA (或 Colw = NA ),否则原始行和列在任何情况下都会重新排序以匹配树状图,例如, order.dendrogram(Rowv) 的行,其中 Rowv 是(可能是 reorder() ed)行树状图。

heatmap() 使用 layout 并在 2x2 布局的右下角绘制 image。因此,它不能用于多列/行布局,即当调用par(mfrow = *)(mfcol = *)时。

例子

require(graphics); require(grDevices)
x  <- as.matrix(mtcars)
rc <- rainbow(nrow(x), start = 0, end = .3)
cc <- rainbow(ncol(x), start = 0, end = .3)
hv <- heatmap(x, col = cm.colors(256), scale = "column",
              RowSideColors = rc, ColSideColors = cc, margins = c(5,10),
              xlab = "specification variables", ylab =  "Car Models",
              main = "heatmap(<Mtcars data>, ..., scale = \"column\")")
utils::str(hv) # the two re-ordering index vectors

## no column dendrogram (nor reordering) at all:
heatmap(x, Colv = NA, col = cm.colors(256), scale = "column",
        RowSideColors = rc, margins = c(5,10),
        xlab = "specification variables", ylab =  "Car Models",
        main = "heatmap(<Mtcars data>, ..., scale = \"column\")")

## "no nothing"
heatmap(x, Rowv = NA, Colv = NA, scale = "column",
        main = "heatmap(*, NA, NA) ~= image(t(x))")


round(Ca <- cor(attitude), 2)
symnum(Ca) # simple graphic
heatmap(Ca,               symm = TRUE, margins = c(6,6)) # with reorder()
heatmap(Ca, Rowv = FALSE, symm = TRUE, margins = c(6,6)) # _NO_ reorder()
## slightly artificial with color bar, without and with ordering:
cc <- rainbow(nrow(Ca))
heatmap(Ca, Rowv = FALSE, symm = TRUE, RowSideColors = cc, ColSideColors = cc,
	margins = c(6,6))
heatmap(Ca,		symm = TRUE, RowSideColors = cc, ColSideColors = cc,
	margins = c(6,6))

## For variable clustering, rather use distance based on cor():
symnum( cU <- cor(USJudgeRatings) )

hU <- heatmap(cU, Rowv = FALSE, symm = TRUE, col = topo.colors(16),
             distfun = function(c) as.dist(1 - c), keep.dendro = TRUE)
## The Correlation matrix with same reordering:
round(100 * cU[hU[[1]], hU[[2]]])
## The column dendrogram:
utils::str(hU$Colv)

作者

Andy Liaw, original; R. Gentleman, M. Maechler, W. Huber, revisions.

也可以看看

image , hclust

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Draw a Heat Map。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。