I’ve tried heatmap.2, d3heatmap, heatmaply, and pheatmap. Anyone out there use a different package to visualize matrices that are about 6000X400 in size?
Going from first principles, heat mapping a matrix you have:
- an implicit vertical coordinate (row) that is equally spaced
- an implicit horizontal coordinate (column) that is equally spaced
- a value that is a range which is to be represented by colours
If you then think of a heatmap as a scatterplot with rectangular points equal to the size of the spacing, you could take that data and do whatever you like to it in the way of plots- things like thresholding the colour values, and merging coordinate points- through general data munging principles.
If you wanted to explore this, rolling your own visualisation, I would suggest:
- First transform the data into a long format row, column, value arrangement
- Explicitly save the visualisation as a png or something when creating it to avoid the onscreen slowdown of making a visualisation with a lot of points. This also has the advantage you can size the visualisation to fit the level of detail you want.
As an afterthought, this approach means that if you want something like an “Emojimap” rather than colours, it would be entirely doable.
Have you decided which package is best for heatmapping very large matrices? (I'm talking about a square matrix with thousands of rows and thousands of columns)
I've been using heatmaply but it can't handle that size as far as I've found.
The Next-Generation Clustered Heat Maps (NG-CHM) system was developed for creating and exploring large heat maps (thousands of rows and/or columns). It was originally developed for bioinformatics data, but can be applied to any large matrix data. You can explore a compendium of large heat maps for TCGA data at http://tcga.ngchm.net. You can build your own NG-CHMs using Galaxy or R/RStudio. Here is a YouTube tutorial showing how to create an NG-CHM in RStudio. More information about NG-CHMs is available at their website.