The function aheatmap
plots high-quality heatmaps,
with a detailed legend and unlimited annotation tracks
for both columns and rows. The annotations are coloured
differently according to their type (factor or numeric
covariate). Although it uses grid graphics, the generated
plot is compatible with base layouts such as the ones
defined with 'mfrow'
or layout
,
enabling the easy drawing of multiple heatmaps on a
single a plot -- at last!.
aheatmap(x, color = "-RdYlBu2:100", breaks = NA, border_color = NA, cellwidth = NA, cellheight = NA, scale = "none", Rowv = TRUE, Colv = TRUE, revC = identical(Colv, "Rowv") || is_NA(Rowv) || (is.integer(Rowv) && length(Rowv) > 1) || is(Rowv, "silhouette"), distfun = "euclidean", hclustfun = "complete", reorderfun = function(d, w) reorder(d, w), treeheight = 50, legend = TRUE, annCol = NA, annRow = NA, annColors = NA, annLegend = TRUE, labRow = NULL, labCol = NULL, subsetRow = NULL, subsetCol = NULL, fontsize = 10, cexRow = min(0.2 + 1/log10(nr), 1.2), cexCol = min(0.2 + 1/log10(nc), 1.2), filename = NA, width = NA, height = NA, main = NULL, sub = NULL, info = NULL, verbose = getOption("verbose"), ...)
ExpressionSet
objects can also be passed, in which case the expression
values are plotted (exprs(x)
).rev(sequential_hcl(2, h = x, l =
c(50, 95)))
. Other values are concatenated with the grey
colour '#F1F1F1'. x
and is one element longer than
color vector. Used for mapping values to colors. Useful,
if needed to map certain values to certain colors. If
value is NA then the breaks are calculated automatically.
If breaks
is a single value, then the colour
palette is centered on this value."row"
: center and standardize each row separately
to row Z-scores "column"
: center and
standardize each column separately to column Z-scores
"r1"
: scale each row to sum up to one "c1"
: scale each column to sum up to one "none"
: no scaling TRUE
or NULL
(to be
consistent with heatmap
): compute a
dendrogram from hierarchical clustering using the
distance and clustering methods distfun
and
hclustfun
.
NA
: disable any ordering. In this case, and
if not otherwise specified with argument
revC=FALSE
, the heatmap shows the input matrix
with the rows in their original order, with the first row
on top to the last row at the bottom. Note that this
differ from the behaviour or heatmap
, but
seemed to be a more sensible choice when vizualizing a
matrix without reordering.
nrow(x)
), that specifies the row
order. As in the case Rowv=NA
, the ordered matrix
is shown first row on top, last row at the bottom.
distfun
, hclustfun
and reorderfun
when clustering the rows (see the
respective argument descriptions for a list of accepted
values). If Rowv
has no names, then the first
element is used for distfun
, the second (if
present) is used for hclustfun
, and the third (if
present) is used for reorderfun
.
d
by
reorderfun(d, Rowv)
.
FALSE
: the dendrogram is computed
using methods distfun
, hclustfun
, and
reorderfun
but is not shown.
treeheight
. Rowv
(modulo the expected length for vector specifications),
and allow specifying the
distance/clustering/ordering/display parameters to be
used for the columns only. Colv
may also be
set to "Rowv"
, in which case the dendrogram or
ordering specifications applied to the rows are also
applied to the columns. Note that this is allowed only
for square input matrices, and that the row ordering is
in this case by default reversed (revC=TRUE
) to
obtain the diagonal in the standard way (from top-left to
bottom-right). See argument Rowv
for other
possible values.Rowv
should be reversed. This is
mainly used to get the rows displayed from top to bottom,
which is not the case by default. Its default value is
computed at runtime, to suit common situations where
natural ordering is a more sensible choice: no or fix
ordering of the rows (Rowv=NA
or an integer vector
of indexes -- of length > 1), and when a symmetric
ordering is requested -- so that the diagonal is shown as
expected. An argument in favor of the "odd" default
display (bottom to top) is that the row dendrogram is
plotted from bottom to top, and reversing its reorder may
take a not too long but non negligeable time.Rowv
or Colv
is a numeric weight vector, or provides or
computes a dendrogram. It must take 2 parameters: a
dendrogram, and a weight vector.labRow
. x
. Rowv
is a dendrogram or hclust object,
it is first converted into an ordering vector, and cannot
be displayed -- and a warning is thrown.subsetRow
. See details above.TRUE
.ExpressionSet
object, in which case the phenotypic data is used
(pData(eset)
). Character or integer vectors are
converted and displayed as factors. Unnamed tracks are
internally renamed into Xi
, with i being
incremented for each unamed track, across both column and
row annotation tracks. For each track, if no
corresponding colour is specified in argument
annColors
, a palette or a ramp is automatically
computed and named after the track's name.annCol
apply.TRUE
.labRow
for a list of the possible
values.fontsize
.fontsize
.info=TRUE
,
information about the clustering methods is displayed at
the bottom of the plot.TRUE
then verbose messages are
displayed and the borders of some viewports are
highlighted. It is entended for debugging purposes.grid.text
, see
gpar
.The development of this function started as a fork of the
function pheatmap
from the pheatmap package,
and provides several enhancements such as:
heatmap
; Please read the associated vignette for more information and sample code.
## See the demo 'aheatmap' for more examples:
## Not run:
##D demo('aheatmap')
## End(Not run)
# Generate random data
n <- 50; p <- 20
x <- abs(rmatrix(n, p, rnorm, mean=4, sd=1))
x[1:10, seq(1, 10, 2)] <- x[1:10, seq(1, 10, 2)] + 3
x[11:20, seq(2, 10, 2)] <- x[11:20, seq(2, 10, 2)] + 2
rownames(x) <- paste("ROW", 1:n)
colnames(x) <- paste("COL", 1:p)
## Default heatmap
aheatmap(x)
## Distance methods
aheatmap(x, Rowv = "correlation")
aheatmap(x, Rowv = "man") # partially matched to 'manhattan'
aheatmap(x, Rowv = "man", Colv="binary")
# Generate column annotations
annotation = data.frame(Var1 = factor(1:p %% 2 == 0, labels = c("Class1", "Class2")), Var2 = 1:10)
aheatmap(x, annCol = annotation)
pheatmap
: Raivo Kolde
Enhancement into aheatmap
: Renaud Gaujoux