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
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"), ...)
ExpressionSetobjects can also be passed, in which case the expression values are plotted (
rev(sequential_hcl(2, h = x, l = c(50, 95))). Other values are concatenated with the grey colour '#F1F1F1'.
xand 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
breaksis 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
NULL(to be consistent with
heatmap): compute a dendrogram from hierarchical clustering using the distance and clustering methods
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.
reorderfunwhen clustering the rows (see the respective argument descriptions for a list of accepted values). If
Rowvhas 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
FALSE: the dendrogram is computed using methods
reorderfunbut is not shown.
Rowv(modulo the expected length for vector specifications), and allow specifying the distance/clustering/ordering/display parameters to be used for the columns only.
Colvmay 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
Rowvfor other possible values.
Rowvshould 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=NAor 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.
Colvis a numeric weight vector, or provides or computes a dendrogram. It must take 2 parameters: a dendrogram, and a weight vector.
Rowvis 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.
ExpressionSetobject, 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.
labRowfor a list of the possible values.
info=TRUE, information about the clustering methods is displayed at the bottom of the plot.
TRUEthen verbose messages are displayed and the borders of some viewports are highlighted. It is entended for debugging purposes.
The development of this function started as a fork of the
pheatmap from the pheatmap package,
and provides several enhancements such as:
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