Thanks Kevin, I experienced the same problems with heatmap.2, and therefore resorted to heatmap. For heatmap, the code change I suggested below fixes the problem with side color ordering as far as I can tell, and lets one create a symmetric heatmap with the origin at the top left (which I agree makes it easier to read). Unless this code change breaks something else, it would be nice if it could be incorporated into R.
Pär On 8 Mar 2012, at 17:27, Kevin R. Coombes wrote: > First, I can confirm this problem exists today, and can now vaguely recall > seeing it in previous version of R. > > sessionInfo() > R version 2.14.1 (2011-12-22) > Platform: x86_64-pc-mingw32/x64 (64-bit) > > There is a bigger problem with heatmap.2 in the gplots package. Using > "symm=TRUE" with no other arguments causes it to fail to print one of the > dendrograms: > > library(gplots) > > cU <- cor(USJudgeRatings) > > heatmap.2(cU, symm = TRUE) > Warning message: > In heatmap.2(cU, symm = TRUE) : > Discrepancy: Colv is FALSE, while dendrogram is `row'. Omitting column > dendogram. > > In order to get the column dendrogram displayed using heatmap.2, you must use > "symm=TRUE, Colv=TRUE". So this succeeds: > > heatmap.2(cU, symm = TRUE, Colv=TRUE) > > To make things worse, heatmap.2 sometimes gets the direction of the column > colors wrong. If you omit "Colv=TRUE", it leaves out the column dendrogram > and gets one set of colors wrong. That, is, the following command fails in > two ways: > > sideCols <- rainbow(ncol(cU)) > > heatmap.2(cU, symm = TRUE, distfun = function(c) as.dist(1 - c), > ColSideColors=sideCols, RowSideColors=sideCols) > > If you include "Colv=TRUE", then it prints the dendrogram and gets both sets > of colorbars correct. So the following command succeeds: > > heatmap.2(cU, symm = TRUE, Colv=TRUE, distfun = function(c) as.dist(1 - c), > + ColSideColors=sideCols, RowSideColors=sideCols) > > It is a separate esthetic question as to which diagonal axis should be used > for symmetry. When it works in heatmap.2, the "origin" is at the bottom left. > Since the dendrograms are printed on the top and left, however, the symmetry > would be easier to see/confirm if the origin were put at the top left. One > might be tempted to fit this by using "revC=TRUE". However, this command > fails because it gets the colorbar wrong: > > heatmap.2(cU, symm = TRUE, Colv=TRUE, revC=TRUE, > distfun = function(c) as.dist(1 - c), > ColSideColors=sideCols, RowSideColors=sideCols) > > I am occasionally of the opinion that both "heatmap" and "heatmap.2" are too > complex to be used reliably by mortals.... > Kevin > > On 2/28/2012 4:04 AM, Pär Engström wrote: >> >> 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 [[alternative HTML version deleted]]
______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel