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

2. Tutorials:
- Using heatmap()
- Using heatmap.2()
- Using ComplexHeatmap
- Using Superheat
- Guide to heatmaps in R
- Using EnrichedHeatmap for visualization of NGS experiments

3. Biostars posts:
- How Do I Draw A Heatmap In R With Both A Color Key And Multiple Color Side Bars?

EDIT 2017-02-03: Added more heatmaps. Thanks to people contributing below.
EDIT 2017-03-14: Added another one.
EDIT 2019-05-28: Added another one.
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
ADD COMMENT
12
Entering edit mode

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

enter image description here

ADD REPLY
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.

ADD REPLY
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.

ADD REPLY
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.

ADD REPLY
1
Entering edit mode
ADD REPLY
0
Entering edit mode

nice

ADD REPLY
1
Entering edit mode

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

ADD REPLY
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!

ADD REPLY
0
Entering edit mode

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

ADD REPLY
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

ADD REPLY
0
Entering edit mode

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

ADD REPLY
0
Entering edit mode

Hi Jean-Karim Heriche,

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"

ADD REPLY
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!

ADD REPLY
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.

ADD REPLY
0
Entering edit mode
ADD REPLY

Login before adding your answer.

Traffic: 1023 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6