heatmap_column_order | R Documentation |
Return Heatmap column order from ComplexHeatmap heatmap object
heatmap_column_order(hm, which_heatmap = NULL)
hm |
|
which_heatmap |
used to specify a specific heatmap with
|
This function is a helpful utility to return the fully
qualified list of colnames in a ComplexHeatmap::Heatmap
object.
The core intention is for the output to be usable with the
original data matrix used in the heatmap. Therefore, the
vector values are colnames()
when present, or integer
column index values when there are no colnames()
. If heatmap
column_labels
are defined, they are returned as names()
.
Note that names()
are assigned inside try()
to allow the
case where column_labels
, or column_title
labels cannot be
coerced to character
values, for example using gridtext
for markdown formatting.
output depends upon the heatmap:
When heatmap columns are grouped using column_split
, and
when the data matrix contains colnames,
returns a character
vector of colnames in the order they
appear in the heatmap. When there are no colnames, integer
column index values are returned. If the heatmap has column labels,
they are returned as vector names.
When columns are grouped using column_split
, it returns a
list
of vectors as described above. The list
is named using the column_title
labels only when there is
an equal number of column labels.
Other jam heatmap functions:
cell_fun_label()
,
heatmap_row_order()
if (check_pkg_installed("ComplexHeatmap")) {
set.seed(123);
mat <- matrix(rnorm(18 * 24),
ncol=24);
rownames(mat) <- paste0("row", seq_len(18))
colnames(mat) <- paste0("column", seq_len(24))
# obtaining row order first causes a warning message
hm1 <- ComplexHeatmap::Heatmap(mat);
# best practice is to draw() and store output in an object
# to ensure the row orders are absolutely fixed
hm1_drawn <- ComplexHeatmap::draw(hm1);
print(heatmap_row_order(hm1_drawn))
print(heatmap_column_order(hm1_drawn))
# row and column split
hm1_split <- ComplexHeatmap::Heatmap(mat,
column_split=3, row_split=3, border=TRUE);
hm1_split_drawn <- ComplexHeatmap::draw(hm1_split);
print(heatmap_row_order(hm1_split_drawn))
print(heatmap_column_order(hm1_split_drawn))
# display two heatmaps side-by-side
mat2 <- mat + rnorm(18*24);
hm2 <- ComplexHeatmap::Heatmap(mat2, border=TRUE, row_split=4);
hm1hm2_drawn <- ComplexHeatmap::draw(hm1_split + hm2,
ht_gap=grid::unit(1, "cm"));
print(heatmap_row_order(hm1hm2_drawn))
print(heatmap_row_order(hm1hm2_drawn, which_heatmap=2))
# by default the order uses the first heatmap
print(heatmap_column_order(hm1hm2_drawn))
# the second heatmap can be returned
print(heatmap_column_order(hm1hm2_drawn, which_heatmap=2))
# or a list of heatmap orders can be returned
print(heatmap_column_order(hm1hm2_drawn, which_heatmap=1:2))
# stacked vertical heatmaps
hm1hm2_drawn_tall <- ComplexHeatmap::draw(ComplexHeatmap::`%v%`(hm1_split, hm2),
ht_gap=grid::unit(1, "cm"));
print(heatmap_row_order(hm1hm2_drawn))
print(heatmap_row_order(hm1hm2_drawn, which_heatmap=2))
print(heatmap_row_order(hm1hm2_drawn, which_heatmap=1:2))
print(heatmap_row_order(hm1hm2_drawn, which_heatmap=names(hm1hm2_drawn@ht_list)))
# annotation heatmap
ha <- ComplexHeatmap::rowAnnotation(left=rownames(mat))
ha_drawn <- ComplexHeatmap::draw(ha + hm1)
print(sdim(ha_drawn@ht_list))
print(heatmap_row_order(ha_drawn))
print(heatmap_column_order(ha_drawn))
# stacked vertical heatmaps with top annotation
ta <- ComplexHeatmap::HeatmapAnnotation(top=colnames(mat))
hm1_ha <- ComplexHeatmap::Heatmap(mat,
left_annotation=ha,
column_split=3, row_split=3, border=TRUE);
hm1hm2_drawn_tall <- ComplexHeatmap::draw(ComplexHeatmap::`%v%`(ta, ComplexHeatmap::`%v%`(hm1_ha, hm2)),
ht_gap=grid::unit(1, "cm"));
print(sdim(hm1hm2_drawn_tall@ht_list))
print(heatmap_row_order(hm1hm2_drawn_tall))
print(heatmap_row_order(hm1hm2_drawn_tall, 2))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.