[BioC] different color for a subset of points on heatmap

Kevin Coombes kevin.r.coombes at gmail.com
Mon Jun 21 17:53:34 CEST 2010


That does not make it easy to plot the dendrograms along with the 
image.  But you can use the Rowv and Colv arguments of heatmap to 
accomplish the same thing.  Here is a complete example:

#################### begin example ###############
set.seed(183426) # for reproducible simulation

M <- 500 # genes
N <- 30  # samples
dataset <- matrix(rnorm(M*N), ncol=N, nrow=M) # simulate data

row.hc <- hclust(dist(dataset))
# simulate special genes in one branch; only for example purposes
special.genes <- which(cutree(row.hc, k=2) == 2)
row.hc <- as.dendrogram(row.hc)
col.hc <- as.dendrogram(hclust(dist(t(dataset))))

K <- 3 # cutoff in standardized units
# standardize data and truncate symmetrically
displaydata <- t(scale(t(dataset)))
displaydata[displaydata > K] <- K
displaydata[displaydata < -K] <- -K
# shift into different ranges; first ordinary genes
displaydata <- displaydata + K # now lives in [0, 2K]
# then shift the special genes into a new range
displaydata[special.genes,] <- displaydata[special.genes,] - 2*K

# pick the paitrs of colormaps you want
colorset <- cbind(topo.colors(20,alpha=0.75),
            heat.colors(20,alpha=1))
# use heatmap as a display tool, not a clustering tool
heatmap(displaydata, scale='none', zlim=c(-2*K, 2*K),
        Rowv=row.hc, Colv=col.hc,
        col=colorset)
###################### end example #################

Anthony Ferrari wrote:
> You could perhaps change the values in the ordered matrix resulting from the
> clustering.
>
> Suppose you cluster your rows and columns with hclust function from cluster
> package. Your initial data matrix is 'mat'.
>
> rows.diss <- dist(mat)    # dissimilarity between rows
> cols.diss <- dist(t(mat))  # dissimilarity between cols
>
> rows.clust <- hclust(rows.diss)
> cols.clust <- hclust(cols.diss)
>
> ordered.matrix <- mat[rows.clust$order,cols.clust$order]
>
> Then you change the values of the genes of interest and then use image() to
> plot the result.
>
> AF
>
>
>
> On 21 June 2010 10:24, marek piatek (BI) <marek.piatek at bbsrc.ac.uk> wrote:
>
>   
>> Hi Francois and all,
>>
>> Thanks for your advice. However if I will give my subset different values
>> they will get clustered in different way - which is not what I want. Your
>> approach is good if I wouldn't be using clustering.
>> And also the subset I would like to use different colour for is a subset of
>> larger population (its min and max values are within the larger set).
>>
>> Any other ideas?
>>
>> Thank you in advance,
>> Marek
>>
>>
>> -----Original Message-----
>> From: Francois Pepin [mailto:francois at sus.mcgill.ca]
>> Sent: 18 June 2010 20:41
>> To: marek piatek (BI)
>> Cc: bioconductor at stat.math.ethz.ch
>> Subject: Re: [BioC] different color for a subset of points on heatmap
>>
>> HI Marek,
>>
>> The easiest way I can think of:
>>
>> One would be give those genes a different set of values. So if all your
>> data is between -5 to 5, have the special genes from say 10 to 20. Then you
>> can send it a set of colors that covers everything.
>>
>> Here's an example where half is positive and half is negative. You can see
>> the transparent colors in half of the columns as opposed to the
>> non-transparent ones otherwise.
>>
>>     
>> heatmap(matrix(c(1,runif(49),-1,-runif(49)),10),col=cbind(heat.colors(20,alpha=0.25),heat.colors(20,alpha=1)))
>>
>> You'll need to be a bit careful to get the colors to match. I put the 1 and
>> -1 to make sure that we cover the range and the colors and and values match.
>>
>> HTH,
>>
>> Francois
>>
>> On Jun 18, 2010, at 6:38 AM, marek piatek (BI) wrote:
>>
>>     
>>> Hi all,
>>>
>>> Is there any way to use different color on a subset of points on a
>>>       
>> heatmap?
>>     
>>> I just would like see a particular set of genes standing out from the
>>>       
>> rest.
>>     
>>> Thank you,
>>> Marek
>>>
>>> _______________________________________________
>>> Bioconductor mailing list
>>> Bioconductor at stat.math.ethz.ch
>>> https://stat.ethz.ch/mailman/listinfo/bioconductor
>>> Search the archives:
>>>       
>> http://news.gmane.org/gmane.science.biology.informatics.conductor
>>
>> _______________________________________________
>> Bioconductor mailing list
>> Bioconductor at stat.math.ethz.ch
>> https://stat.ethz.ch/mailman/listinfo/bioconductor
>> Search the archives:
>> http://news.gmane.org/gmane.science.biology.informatics.conductor
>>
>>     
>
> 	[[alternative HTML version deleted]]
>
> _______________________________________________
> Bioconductor mailing list
> Bioconductor at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/bioconductor
> Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor
>



More information about the Bioconductor mailing list