> 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.
It now has been incorporated: For 2.15.0 (due in less than three weeks, see "Release Plans" on http://developer.r-project.org/) Thanks you very much, Pär (and Kevin) ! Martin > 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 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel