The following code demonstrates something a potential bug in heatmap.2, unless there is something else that we are missing.
Taken from the heatmap.2 documentation: (Package gplots version 2.12.1)
scale: character indicating if the values should be centered and scaled in either the row direction or the column direction, or none. The default is “row” if symm false, and “none” otherwise.
It sounds like when symm=FALSE, the scaling should be “row” by default. Here is what we see.
library(gplots)
mat <- t(matrix(1:50, nrow=10,ncol=5))
print(mat)
heatmap.2(mat, trace="none", Colv=NA, Rowv=NA, dendrogram="none", symm=FALSE, main="no scale given")
heatmap.2(mat, trace="none", Colv=NA, Rowv=NA, dendrogram="none", symm=FALSE, scale="none", main="scale=none")
heatmap.2(mat, trace="none", Colv=NA, Rowv=NA, dendrogram="none", symm=FALSE, scale="row", main="scale=row")
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 1 2 3 4 5 6 7 8 9 10
## [2,] 11 12 13 14 15 16 17 18 19 20
## [3,] 21 22 23 24 25 26 27 28 29 30
## [4,] 31 32 33 34 35 36 37 38 39 40
## [5,] 41 42 43 44 45 46 47 48 49 50
It looks like no scaling is happening by default, and row scaling only happening when scale=row is explicit.