[R] Heatmap help

Patricia J. Hawkins phawkins at connact.com
Sat Mar 4 22:18:35 CET 2017


Hi, you have a couple of things going on here.  You can reorder your
matrix by creating an index like this:

> A_index=c(grep(".A", colnames(A)), grep(".B", colnames(A)))

and do this:

> heatmap.2(A[,A_index], dendrogram="col", Rowv = colnames(A)[A_index], tracecol =
          NA,col=bluered(64), sub = "",
          distfun = function(y) dist(y, method = "euclidean"), hclustfun =
          function(y) hclust(y, method = "median"),
          scale = "row",cexCol = 1, cexRow = 0.9, ylab = "Enzymes", xlab =
         "Samples", margins = c(9,9), keysize = 1,
          main='Test')

But you're constructing your dendrogram on the columns, so your columns
get reordered by mean weight.  (Also, you've misunderstood Rowv and Colv.)

However, if you force your columns to not reorder by setting
"Colv=FALSE", AND tell it to construct the dendrogram on the columns,
you get a warning, because that's contradictory:

> heatmap.2(A[,A_index], dendrogram="col", Colv = FALSE, tracecol = NA,col=bluered(64), sub = "",
          distfun = function(y) dist(y, method = "euclidean"),  
          hclustfun = function(y) hclust(y, method = "median"),
          scale = "row",cexCol = 1, cexRow = 0.9, ylab = "Enzymes", xlab =
          "Samples", margins = c(9,9), keysize = 1, main='Test')
Warning message:
In heatmap.2(A[, A_index], dendrogram = "col", Colv = FALSE, tracecol = NA,  :
  Discrepancy: Colv is FALSE, while dendrogram is `column'. Omitting column dendogram.

Maybe you really meant to build your dendrogram on the rows, like this:

heatmap.2(A[,A_index], dendrogram="row", Colv = FALSE, tracecol = NA,col=bluered(64), sub = "",
          distfun = function(y) dist(y, method = "euclidean"),  
          hclustfun = function(y) hclust(y, method = "median"),
          scale = "row",cexCol = 1, cexRow = 0.9, ylab = "Enzymes", xlab =
          "Samples", margins = c(9,9), keysize = 1, main='Test')

If that's not it, I suggest playing around with the examples in
?heatmap.2 since the documentation is kind of opaque, but the examples
are pretty good.

>>>>> "ALN" == André Luis Neves <andrluis at ualberta.ca> writes:

ALN> Dear all,

ALN> I was wondering if you could help me to construct a heat map, in which the
ALN> columns are sorted by sample type (A first and then B).
ALN> My reproducible example below runs, but the columns of the heatmap are not
ALN> organized in the way I would like because it has first sampleA, SampleB,
ALN> sampleA, and then sampleB.


ALN> A = matrix(rnorm(20), 5,8)
ALN> A
ALN> colnames(A) <- c ("Sample1.A", "Sample2.B", "Sample3.A", "Sample4.B",
ALN> "Sample5.A", "Sample6.B", "Sample7.A", "Sample8.B")
ALN> A
ALN> rownames(A) <- c ("protein1","protein2", "protein3", "protein4","protein5")
ALN> A

ALN> heatmap.2(A, dendrogram="col", Rowv = colnames(A), tracecol =
ALN> NA,col=bluered(64), sub = "",
ALN>           distfun = function(y) dist(y, method = "euclidean"), hclustfun =
ALN> function(y) hclust(y, method = "median"),
ALN>           scale = "row",cexCol = 1, cexRow = 0.9, ylab = "Enzymes", xlab =
ALN> "Samples", margins = c(9,9), keysize = 1,
ALN>           main='Test')



ALN> ​Thanks.

ALN> -- 
ALN> Andre

ALN> 	[[alternative HTML version deleted]]

ALN> ______________________________________________
ALN> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
ALN> https://stat.ethz.ch/mailman/listinfo/r-help
ALN> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
ALN> and provide commented, minimal, self-contained, reproducible code.



-- 
Patricia J. Hawkins



More information about the R-help mailing list