Tutorial:Heatmaps in R
0
58
Entering edit mode
4.7 years ago

As heatmaps in R are a recurring theme, I thought I'd collect information here:

1. List of heatmap functions (and packages) in R:
- heatmap
- heatmap.2 (package gplots)
- heatmap.3 (package GMD, not on CRAN anymore)
- heatmap.plus
- aheatmap (package NMF)
- pheatmap
- ggheat (code in this blog post)
- heatmaply
- d3heatmap (not maintained, not on CRAN anymore)
- ComplexHeatmap
- Superheat
- Heatplus
- iheatmapr

EDIT 2017-02-03: Added more heatmaps. Thanks to people contributing below.
EDIT 2019-09-06: Added tutorial for EnrichedHeatmap (thanks to ATpoint)
EDIT 2020-08-14: Update: GMD and d3heatmap not on CRAN.

heatmap R Tutorial • 22k views
12
Entering edit mode

We need to modify this xkcd strip to replace "standards" with "heatmap functions in R".

2
Entering edit mode

...or "pipeline frameworks written in python." :) I find it is interesting there are so many tools/packages in the same application space, especially when they are implemented almost the same way.

8
Entering edit mode

Heatmaps in R are a curious beast as they do a lot more than "just" draw the heatmap.

They promote that endemic and flawed ideology that is very common of R based software. Instead of breaking down the steps into their logical units that one can easily build upon:

1. compute distances
2. perform a clustering
3. scale the data (this can be an earlier step actually and that could also matter)
4. draw the heatmap

They give you one "convenient" function with lots of parameters - but all that leads to is a misleading simplicity. It is really not clear what takes place and whether those steps are universally applicable. Hence the many options - neither of which takes on what the real problem is - overly tightly coupled concepts.

The majority of the people that use heatmaps probably do not fully understand how these heatmaps were created and that there are essential data processing steps involved that fundamentally alter what the heatmap will look like.

0
Entering edit mode

This reminds me of the "Quilt plot" paper a few years ago. This paper received a lot of hate but it proposed a much simpler implementation of the heatmap function in R (without clustering). I think such a paper would never have existed if the base R function was more intuitive/simple.

1
Entering edit mode
0
Entering edit mode

nice

1
Entering edit mode

Someone mentioned to me in the office that the list is missing d3heatmap and superheat.

1
Entering edit mode

Don't forget aheatmap from the NMF package. I also often roll my own with image() and layout(), and it is TERRIBLE!

0
Entering edit mode

I do it with ggplot2 and it is awful, but I like the flexibility it gives me with the layout.

0
Entering edit mode

Also add corrplot for correlation heatmaps.

Tutorials are here,

https://cran.r-project.org/web/packages/corrplot/vignettes/corrplot-intro.html

0
Entering edit mode

I just wrote up a post for heatmap， check here http://rpubs.com/crazyhottommy/a-tale-of-two-heatmap-functions

0
Entering edit mode

I haven't tried it (yet*) but this one looks pretty: Superheat: An R package for creating beautiful and extendable heatmaps for visualizing complex data. Also on github

*PhD-student-slang for "I would certainly like to but never will"

0
Entering edit mode

Hi Jean-Karim Heriche, I am wondering how can I make cluster heatmap, where I can assign samples to per-defiend clusters? thanks!

0
Entering edit mode

Just reorder the matrix as per your clustering. If you're working with hierarchical clustering, you can do something like this with base R:

tree <- hclust(dist(data.matrix, method = ...), method = ...)
data.matrix.reordered <- data.matrix[tree$order, tree$order]
heatmap(data.matrix.reordered, Rowv= as.dendrogram(tree), Colv=as.dendrogram(tree))


Check also the various heatmap packages. For example pheatmap and ComplexHeatmap allow to split a heatmap based on clusters.

0
Entering edit mode