當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。