
image(t(x))
) with a dendrogram added to the left side
and to the top. Typically, reordering of the rows and columns
according to some set of values (row or column means) within the
restrictions imposed by the dendrogram is carried out.
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"), ...)
dendrogram
or a
vector of values used to reorder the row dendrogram or
NA
to suppress any row dendrogram (and reordering) or
by default, NULL
, see ‘Details’ below.Rowv
argument above and
additionally when x
is a square matrix, Colv =
"Rowv"
means that columns should be treated identically to the
rows (and so if there is to be no row dendrogram there will not be a
column one either).dist
.Rowv
or Colv
are not dendrograms. Defaults to
hclust
. Should take as argument a result of distfun
and return an object to which as.dendrogram
can be applied.function(d, w)
of dendrogram and weights for
reordering the row and column dendrograms. The default uses
reorder.dendrogram
.image
. Can be used to add components to the plot.x
should be treated
symmetrically; can only be true when x
is a square matrix.rev
ersed for plotting, such that e.g., for the
symmetric case, the symmetry axis is as usual."row"
if symm
false, and
"none"
otherwise.NA
's should be removed.par(mar = *)
) for column and row names, respectively.ncol(x)
containing the color names for a horizontal side bar that may be used to
annotate the columns of x
.nrow(x)
containing the color names for a vertical side bar that may be used to
annotate the rows of x
.cex.axis
in
for the row or column axis labeling. The defaults currently only
use number of rows or columns, respectively.rownames(x)
or colnames(x)
,
respectively.Rowv
and/or Colv
are
not NA).image
,
e.g., col
specifying the colors.order.dendrogram
.Rowv
was not NA
and keep.dendro
is true.Colv
was not NA
and keep.dendro
is true.Rowv
or Colv
are dendrograms they are honored
(and not reordered). Otherwise, dendrograms are computed as
dd <- as.dendrogram(hclustfun(distfun(X)))
where X
is
either x
or t(x)
. If either is a vector (of ‘weights’) then the appropriate
dendrogram is reordered according to the supplied values subject to
the constraints imposed by the dendrogram, by reorder(dd,
Rowv)
, in the row case.
If either is missing, as by default, then the ordering of the
corresponding dendrogram is by the mean value of the rows/columns,
i.e., in the case of rows, Rowv <- rowMeans(x, na.rm = na.rm)
.
If either is NA
, no reordering will be done for
the corresponding side.
By default (scale = "row"
) the rows are scaled to have mean
zero and standard deviation one. There is some empirical evidence
from genomic plotting that this is useful.
The default colors are not pretty. Consider using enhancements such as the \href{https://CRAN.R-project.org/package=#1}{\pkg{#1}}RColorBrewerRColorBrewer package.
image
, hclust
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)
Run the code above in your browser using DataLab