GitPedia

TidyHeatmap

Draw heatmap simply using a tidy data frame

From stemangiola·Updated May 9, 2026·View on GitHub·

The tidyHeatmap package ================ Stefano Mangiola 2025-01-26 The project is written primarily in R, first published in 2020. Key topics include: brewer, complexheatmap, custom-palette, dplyr, graphviz.

Latest release: v1.13.1v1.13.1 colored symbols
November 16, 2025View Changelog →

The tidyHeatmap package

Stefano Mangiola
2025-01-26

<!-- badges: start -->

Lifecycle:maturing
DOI

<!-- badges: end -->

tidyHeatmap is a package that introduces tidy principles to the
creation of information-rich heatmaps. This package uses
ComplexHeatmap
as graphical engine.

Citation

Mangiola et al., (2020). tidyHeatmap: an R package for modular heatmap
production based on tidy principles. Journal of Open Source Software,
5(52), 2472, https://doi.org/10.21105/joss.02472

Full documentation here

r
# Create some more data points pasilla_plus <- tidyHeatmap::pasilla |> dplyr::mutate(activation_2 = activation, activation_3 = activation) |> tidyr::nest(data = -sample) |> dplyr::mutate(size = rnorm(n(), 4,0.5)) |> dplyr::mutate(age = runif(n(), 50, 200)) |> tidyr::unnest(data) # Plot pasilla_plus |> heatmap( .column = sample, .row = symbol, .value = `count normalised adjusted`, scale = "row" ) |> annotation_group(location) |> annotation_tile(condition, show_legend = FALSE) |> annotation_point(activation) |> annotation_numeric(activation_3) |> annotation_tile(activation_2) |> annotation_bar(size) |> annotation_line(age)
<img src="man/figures/example_plot.png" width="100%" />

Advantages:

  • Modular annotation with just specifying column names
  • Custom grouping of rows/columns is easy to specify with annotation_group, e.g. heatmap(...) |> annotation_group(...)
  • Labels size adjusted by row and column total number
  • Default use of Brewer and Viridis palettes

Retrieve heatmap data and dendrograms

After creating a heatmap, you can extract the matrix and dendrograms exactly as they appear in the plot:

r
# Create heatmap hm <- tidyHeatmap::N52 |> tidyHeatmap::heatmap( .row = symbol_ct, .column = UBR, .value = `read count normalised log` ) # Extract heatmap data as plotted result <- hm |> get_heatmap_data() ordered_matrix <- result$matrix # Matrix with rows/columns in heatmap order row_dendrogram <- result$row_dend # Row dendrogram object column_dendrogram <- result$column_dend # Column dendrogram object # All have consistent row and column names print(rownames(ordered_matrix)) print(labels(row_dendrogram))

Functions/utilities available

FunctionDescription
heatmapPlots base heatmap
annotation_groupAdds group annotation strips and grouping to the heatmap
annotation_tileAdds tile annotation to the heatmap
annotation_pointAdds point annotation to the heatmap
annotation_barAdds bar annotation to the heatmap
annotation_numericAdds bar + number annotation to the heatmap
annotation_lineAdds line annotation to the heatmap
layer_textAdd layer of text on top of the heatmap
layer_pointAdds layer of symbols on top of the heatmap
layer_squareAdds layer of symbols on top of the heatmap
layer_diamondAdds layer of symbols on top of the heatmap
layer_arrow_upAdds layer of symbols on top of the heatmap
layer_arrow_downAdd layer of symbols on top of the heatmap
layer_starAdd layer of symbols on top of the heatmap
layer_asteriskAdd layer of symbols on top of the heatmap
split_rowsSplits the rows based on the dendogram
split_columnsSplits the columns based on the dendogram
get_heatmap_dataRetrieves matrix and dendrograms exactly as plotted
save_pdfSaves the PDF of the heatmap
+Integrate heatmaps side-by-side
as_ComplexHeatmapConvert the tidyHeatmap output to ComplexHeatmap for non-standard "drawing"
wrap_heatmapAllows the integration with the patchwork package

Installation

To install the most up-to-date version

r
devtools::install_github("stemangiola/tidyHeatmap")

To install the most stable version (however please keep in mind that
this package is under a maturing lifecycle stage)

r
install.packages("tidyHeatmap")

Contribution

If you want to contribute to the software, report issues or problems
with the software or seek support please open an issue
here

Contributors

Showing top 10 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from stemangiola/tidyHeatmap via the GitHub API.Last fetched: 6/14/2026