Hello,

I have come across some unexpected behaviour of the function heatmap in the 
stats package. This looks like a bug to me, but I might have misunderstood 
something.

When calling the function in symmetric mode, the ColSideColors are plotted 
correctly, but RowSideColors appear in reverse order. This code (modified from 
the example on the help page) demonstrates the problem:

cU <- cor(USJudgeRatings)
sideCols <- rainbow(ncol(cU))
heatmap(cU, symm = TRUE, distfun = function(c) as.dist(1 - c),
       ColSideColors=sideCols, RowSideColors=sideCols)

Reversing the RowSideColors argument does not solve the problem:

heatmap(cU, symm = TRUE, distfun = function(c) as.dist(1 - c),
       ColSideColors=sideCols, RowSideColors=rev(sideCols))

I had a look at the the function code and found that this change fixes the 
problem:

Replace

       image(rbind(1L:nr), col = RowSideColors[rowInd], axes = FALSE)

with

       image(rbind(if(revC) nr:1L else 1L:nr), col = RowSideColors[rowInd], 
axes = FALSE)

I am using the current version of R for Mac OS X:

> sessionInfo()
R version 2.14.1 (2011-12-22)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base    


Regards,

Pär Engström

Postdoctoral Fellow
EMBL European Bioinformatics Institute
Wellcome Trust Genome Campus
Hinxton, Cambridge, UK



        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to