Creates heatmap based on identified clusters
Usage
showClusterHeatmap(
gobject,
spat_unit = NULL,
feat_type = NULL,
expression_values = c("normalized", "scaled", "custom"),
feats = "all",
cluster_column,
cor = c("pearson", "spearman"),
distance = "ward.D",
show_plot = NULL,
return_plot = NULL,
save_plot = NULL,
save_param = list(),
default_save_name = "showClusterHeatmap",
...
)
Arguments
- gobject
giotto object
- spat_unit
spatial unit (e.g. "cell")
- feat_type
feature type (e.g. "rna", "dna", "protein")
- expression_values
expression values to use (e.g. "normalized", "scaled", "custom")
- feats
vector of features to use, default to 'all'
- cluster_column
name of column to use for clusters (e.g. "leiden_clus")
- cor
correlation score to calculate distance (e.g. "pearson", "spearman")
- distance
distance method to use for hierarchical clustering, default to "ward.D"
- show_plot
logical. show plot
- return_plot
logical. return ggplot object
- save_plot
logical. save the plot
- save_param
list of saving parameters, see
showSaveParameters
- default_save_name
default save name for saving, don't change, change save_name in save_param
- ...
Arguments passed on to
ComplexHeatmap::Heatmap
matrix
A matrix. Either numeric or character. If it is a simple vector, it will be converted to a one-column matrix.
col
A vector of colors if the color mapping is discrete or a color mapping function if the matrix is continuous numbers (should be generated by
colorRamp2
). If the matrix is continuous, the value can also be a vector of colors so that colors can be interpolated. Pass toColorMapping
. For more details and examples, please refer to https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html#colors .name
Name of the heatmap. By default the heatmap name is used as the title of the heatmap legend.
na_col
Color for
NA
values.rect_gp
Graphic parameters for drawing rectangles (for heatmap body). The value should be specified by
gpar
andfill
parameter is ignored.color_space
The color space in which colors are interpolated. Only used if
matrix
is numeric andcol
is a vector of colors. Pass tocolorRamp2
.border
Whether draw border. The value can be logical or a string of color.
border_gp
Graphic parameters for the borders. If you want to set different parameters for different heatmap slices, please consider to use
decorate_heatmap_body
.cell_fun
Self-defined function to add graphics on each cell. Seven parameters will be passed into this function:
j
,i
,x
,y
,width
,height
,fill
which are column index, row index inmatrix
, coordinate of the cell, the width and height of the cell and the filled color.x
,y
,width
andheight
are allunit
objects.layer_fun
Similar as
cell_fun
, but is vectorized. Check https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html#customize-the-heatmap-body .jitter
Random shifts added to the matrix. The value can be logical or a single numeric value. It it is
TRUE
, random values from uniform distribution between 0 and 1e-10 are generated. If it is a numeric value, the range for the uniform distribution is (0,jitter
). It is mainly to solve the problem of "Error: node stack overflow" when there are too many identical rows/columns for plotting the dendrograms. ADD: From version 2.5.6, the error of node stack overflow has been fixed, now this argument is ignored.row_title
Title on the row.
row_title_side
Will the title be put on the left or right of the heatmap?
row_title_gp
Graphic parameters for row title.
row_title_rot
Rotation of row title.
column_title
Title on the column.
column_title_side
Will the title be put on the top or bottom of the heatmap?
column_title_gp
Graphic parameters for column title.
column_title_rot
Rotation of column titles.
cluster_rows
If the value is a logical, it controls whether to make cluster on rows. The value can also be a
hclust
or adendrogram
which already contains clustering. Check https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html#clustering .cluster_row_slices
If rows are split into slices, whether perform clustering on the slice means?
clustering_distance_rows
It can be a pre-defined character which is in ("euclidean", "maximum", "manhattan", "canberra", "binary", "minkowski", "pearson", "spearman", "kendall"). It can also be a function. If the function has one argument, the input argument should be a matrix and the returned value should be a
dist
object. If the function has two arguments, the input arguments are two vectors and the function calculates distance between these two vectors.clustering_method_rows
Method to perform hierarchical clustering, pass to
hclust
.row_dend_side
Should the row dendrogram be put on the left or right of the heatmap?
row_dend_width
Width of the row dendrogram, should be a
unit
object.show_row_dend
Whether show row dendrogram?
row_dend_gp
Graphic parameters for the dendrogram segments. If users already provide a
dendrogram
object with edges rendered, this argument will be ignored.row_dend_reorder
Apply reordering on row dendrograms. The value can be a logical value or a vector which contains weight which is used to reorder rows. The reordering is applied by
reorder.dendrogram
.cluster_columns
Whether make cluster on columns? Same settings as
cluster_rows
.cluster_column_slices
If columns are split into slices, whether perform clustering on the slice means?
clustering_distance_columns
Same setting as
clustering_distance_rows
.clustering_method_columns
Method to perform hierarchical clustering, pass to
hclust
.column_dend_side
Should the column dendrogram be put on the top or bottom of the heatmap?
column_dend_height
height of the column cluster, should be a
unit
object.show_column_dend
Whether show column dendrogram?
column_dend_gp
Graphic parameters for dendrogram segments. Same settings as
row_dend_gp
.column_dend_reorder
Apply reordering on column dendrograms. Same settings as
row_dend_reorder
.row_order
Order of rows. Manually setting row order turns off clustering.
column_order
Order of column.
row_labels
Optional row labels which are put as row names in the heatmap.
row_names_side
Should the row names be put on the left or right of the heatmap?
show_row_names
Whether show row names.
row_names_max_width
Maximum width of row names viewport.
row_names_gp
Graphic parameters for row names.
row_names_rot
Rotation of row names.
row_names_centered
Should row names put centered?
column_labels
Optional column labels which are put as column names in the heatmap.
column_names_side
Should the column names be put on the top or bottom of the heatmap?
column_names_max_height
Maximum height of column names viewport.
show_column_names
Whether show column names.
column_names_gp
Graphic parameters for drawing text.
column_names_rot
Rotation of column names.
column_names_centered
Should column names put centered?
top_annotation
A
HeatmapAnnotation
object.bottom_annotation
A
HeatmapAnnotation
object.left_annotation
It should be specified by
rowAnnotation
.right_annotation
it should be specified by
rowAnnotation
.km
Apply k-means clustering on rows. If the value is larger than 1, the heatmap will be split by rows according to the k-means clustering. For each row slice, hierarchical clustering is still applied with parameters above.
split
A vector or a data frame by which the rows are split. But if
cluster_rows
is a clustering object,split
can be a single number indicating to split the dendrogram bycutree
.row_km
Same as
km
.row_km_repeats
Number of k-means runs to get a consensus k-means clustering. Note if
row_km_repeats
is set to more than one, the final number of groups might be smaller thanrow_km
, but this might means the originalrow_km
is not a good choice.row_split
Same as
split
.column_km
K-means clustering on columns.
column_km_repeats
Number of k-means runs to get a consensus k-means clustering. Similar as
row_km_repeats
.column_split
Split on columns. For heatmap splitting, please refer to https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html#heatmap-split .
gap
Gap between row slices if the heatmap is split by rows. The value should be a
unit
object.row_gap
Same as
gap
.column_gap
Gap between column slices.
show_parent_dend_line
When heatmap is split, whether to add a dashed line to mark parent dendrogram and children dendrograms?
width
Width of the heatmap body.
height
Height of the heatmap body.
heatmap_width
Width of the whole heatmap (including heatmap components)
heatmap_height
Height of the whole heatmap (including heatmap components). Check https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html#size-of-the-heatmap .
show_heatmap_legend
Whether show heatmap legend?
heatmap_legend_param
A list contains parameters for the heatmap legends. See
color_mapping_legend,ColorMapping-method
for all available parameters.use_raster
Whether render the heatmap body as a raster image. It helps to reduce file size when the matrix is huge. If number of rows or columns is more than 2000, it is by default turned on. Note if
cell_fun
is set,use_raster
is enforced to beFALSE
.raster_device
Graphic device which is used to generate the raster image.
raster_quality
A value larger than 1.
raster_device_param
A list of further parameters for the selected graphic device. For raster image support, please check https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html#heatmap-as-raster-image .
raster_resize_mat
Whether resize the matrix to let the dimension of the matrix the same as the dimension of the raster image? The value can be logical. If it is
TRUE
,mean
is used to summarize the sub matrix which corresponds to a single pixel. The value can also be a summary function, e.g.max
.raster_by_magick
Whether to use
image_resize
to scale the image.raster_magick_filter
Pass to
filter
argument ofimage_resize
. A character scalar and all possible values are infilter_types
. The default is"Lanczos"
.post_fun
A function which will be executed after the heatmap list is drawn.
Examples
g <- GiottoData::loadGiottoMini("visium", verbose = FALSE)
showClusterHeatmap(g, cluster_column = "leiden_clus")
#> Error: package 'ComplexHeatmap' is not yet installed
#>
#> To install:
#> if(!requireNamespace('BiocManager', quietly = TRUE)) install.packages('BiocManager');
#> BiocManager::install(c("ComplexHeatmap"))