Question: Heatmap Visualisations?
5
gravatar for Darren J. Fitzpatrick
8.1 years ago by
Ireland/ United Kingdom
Darren J. Fitzpatrick1.1k wrote:

Given a distance matrix - does anybody have any suggestions for software for producing heatmaps that is compatible with Linux. I have tried in R but it just doesn't look 'nice'.

Thanks, D.

software heatmap • 12k views
ADD COMMENTlink written 8.1 years ago by Darren J. Fitzpatrick1.1k
9

in short: use ggplot (or heatmap.2) instead of the standard heatmap command

ADD REPLYlink written 8.1 years ago by Michael Schubert6.9k
7

what do you mean by not nice, which function did you use, how do you want it to look? There were some tools listed in these questions: http://biostar.stackexchange.com/questions/2499/an-interactive-heatmap-for-viewing-expression-data-matrices http://biostar.stackexchange.com/questions/921/how-to-draw-a-csv-data-file-as-a-heatmap-using-numpy-and-matplotlib

ADD REPLYlink modified 5.8 years ago • written 8.1 years ago by Michael Dondrup46k
6
gravatar for Istvan Albert
8.1 years ago by
Istvan Albert ♦♦ 80k
University Park, USA
Istvan Albert ♦♦ 80k wrote:

Nice is a relative term, what you probably mean that you want to customize it in a way that is not immediately available with the existing heatmap.

As it has been already mentioned by Michael in a comment (I'll add it here since I'd consider that an answer as well) you might want to consider alternative plotting libraries such as:

ADD COMMENTlink written 8.1 years ago by Istvan Albert ♦♦ 80k
3
gravatar for Michi
8.1 years ago by
Michi940
Barcelona
Michi940 wrote:

Biostar has the answer here:

First option is also my recommendation: gitools. since it is written in java you may use it on your linux machine without problems I hope.

ADD COMMENTlink written 8.1 years ago by Michi940
3
gravatar for hadasa
8.1 years ago by
hadasa1.0k
hadasa1.0k wrote:

Here is an awesome function using ggplot to generate a heatmap(ggheat) and producing visually appealing heatmaps. Available at this post: http://rforcancer.drupalgardens.com/content/ggheat-ggplot2-style-heatmap-function

 ## m=matrix(data=sample(rnorm(100,mean=0,sd=2)), ncol=10)
 ## this function makes a graphically appealing heatmap (no dendrogram) using ggplot
 ## whilst it contains fewer options than gplots::heatmap.2 I prefer its style and flexibility

 ggheat=function(m, rescaling='none', clustering='none', labCol=T, labRow=T, border=FALSE, 
 heatscale= c(low='blue',high='red'))
 {
   ## the function can be be viewed as a two step process
   ## 1. using the rehape package and other funcs the data is clustered, scaled, and reshaped
   ## using simple options or by a user supplied function
   ## 2. with the now reshaped data the plot, the chosen labels and plot style are built

   require(reshape)
   require(ggplot2)

   ## you can either scale by row or column not both! 
   ## if you wish to scale by both or use a different scale method then simply supply a scale
   ## function instead NB scale is a base funct

   if(is.function(rescaling))
   { 
     m=rescaling(m)
   } 
   else 
   {
     if(rescaling=='column') 
       m=scale(m, center=T)
     if(rescaling=='row') 
       m=t(scale(t(m),center=T))
   }

   ## I have supplied the default cluster and euclidean distance- and chose to cluster after scaling
   ## if you want a different distance/cluster method-- or to cluster and then scale
   ## then you can supply a custom function 

   if(is.function(clustering)) 
   {
     m=clustering(m)
   }else
   {
   if(clustering=='row')
     m=m[hclust(dist(m))$order, ]
   if(clustering=='column')  
     m=m[,hclust(dist(t(m)))$order]
  if(clustering=='both')
     m=m[hclust(dist(m))$order ,hclust(dist(t(m)))$order]
   }
     ## this is just reshaping into a ggplot format matrix and making a ggplot layer

   numrows=dim(m)[1]
   numcols=dim(m)[2]
   melt.m=cbind(rowInd=rep(1:numrows, times=numcols), colInd=rep(1:numcols, each=numrows) ,melt(m))
     g=ggplot(data=melt.m)

   ## add the heat tiles with or without a white border for clarity

   if(border==TRUE)
     g2=g+geom_rect(aes(xmin=colInd-1,xmax=colInd,ymin=rowInd-1,ymax=rowInd, fill=value),colour='white')
   if(border==FALSE)
     g2=g+geom_rect(aes(xmin=colInd-1,xmax=colInd,ymin=rowInd-1,ymax=rowInd, fill=value))

   ## add axis labels either supplied or from the colnames rownames of the matrix
   if(length(labCol)==numcols)
   {
     g2=g2+scale_x_continuous(breaks=(1:numcols)-0.5, labels=labCol)
   }else
   {
     if(labCol==T) 
       g2=g2+scale_x_continuous(breaks=(1:numcols)-0.5, labels=colnames(m))
     if(labCol==F) 
       g2=g2+scale_x_continuous(breaks=(1:numcols)-0.5, labels=rep('',numcols))
   }

   if(length(labRow)==numrows)
   {
     g2=g2+scale_y_continuous(breaks=(1:numrows)-0.5, labels=labRow)
   }else
   {
     if(labRow==T)
       g2=g2+scale_y_continuous(breaks=(1:numrows)-0.5, labels=rownames(m))    
       if(labRow==F) 
       g2=g2+scale_y_continuous(breaks=(1:numrows)-0.5, labels=rep('',numrows))    
   }
   ## get rid of grey panel background and gridlines

   g2=g2+opts(panel.grid.minor=theme_line(colour=NA), panel.grid.major=theme_line(colour=NA),
   panel.background=theme_rect(fill=NA, colour=NA))

   ## finally add the fill colour ramp of your choice (default is blue to red)-- and return
   return(g2+scale_fill_continuous("", heatscale[1], heatscale[2]))

 }

Usage:(ripped from the same page)

data(mtcars)
x=as.matrix(mtcars)
ggheat(x, clustering='column', rescaling='row', heatscale=c(low='red', high='yellow'))
ADD COMMENTlink written 8.1 years ago by hadasa1.0k
2
gravatar for Burke
8.1 years ago by
Burke270
Bethesda, MD
Burke270 wrote:

I have found the following web app / source code to be a great way to visualize data as a heatmap. It is customizable enough for my needs while having almost no learning curve. Platform independant as well as it is written in C.

http://www.bioinformatics.ubc.ca/matrix2png/index.html

Update: If you are not opposed to doing a little programming, the python graphing class matlibplot has a nice heatmap output. An example with code can be found here: http://stackoverflow.com/questions/2369492/generate-a-heatmap-in-matplotlib-using-a-scatter-data-set

ADD COMMENTlink modified 7.3 years ago • written 8.1 years ago by Burke270
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 1568 users visited in the last hour