Get colors for your heatmap annotation
This post will show how to configure quickly the colors for the annotation of rows/columns that go on top or on the side of a heatmap.
I normally use pheatmap
a lot. Recently I discovered ComplexHeatmap
. In both cases I spend always sometime changing the colors of the annotations. I ended up coding a function inside my package DEGreport
to do that.
Given a data.frame with metadata data information will do:
- white-black scale for numerical variables
- blue-orange for categorical values with only two categories
Set2
palette for categorical values with more than two categories
All three color sets can be changed using the parameters function.
library(DEGreport)
library(stemHypoxia)
data(stemHypoxia)
I am going to use this stemcell experiment dataset I found randomly in Bioconductor page.
exp = as.matrix(M[,3:30])
rownames(exp) = M[,2]
rownames(design) = colnames(exp)
design = design[,c(1:2)]
design$time = as.factor(design$time)
I’ll find the most variable genes.
most_variable = names(tail(sort(apply(exp, 1, sd)), 1000))
design$mean_gene = colMeans(exp[most_variable,])
And we can plot the heatmap with new colors with need to specify each variable at a time.
library(pheatmap)
pheatmap(exp[most_variable,], scale = "row", show_rownames = FALSE,
annotation_col = design,
annotation_colors = degColors(design))
If you use ComplexHeatmap
you can activate col_fun = TRUE
to get it working.
- R Session
devtools::session_info()
## Warning: 'DESCRIPTION' file has an 'Encoding' field and re-encoding is not
## possible
## Session info -------------------------------------------------------------
## setting value
## version R version 3.5.1 (2018-07-02)
## system x86_64, darwin15.6.0
## ui X11
## language (EN)
## collate en_US.UTF-8
## tz America/New_York
## date 2018-09-21
## Packages -----------------------------------------------------------------
## package * version date source
## acepack 1.4.1 2016-10-29 cran (@1.4.1)
## annotate 1.58.0 2018-05-01 cran (@1.58.0)
## AnnotationDbi 1.42.1 2018-05-08 Bioconductor
## assertthat 0.2.0 2017-04-11 CRAN (R 3.5.0)
## backports 1.1.2 2017-12-13 CRAN (R 3.5.0)
## base * 3.5.1 2018-07-05 local
## base64enc 0.1-3 2015-07-28 CRAN (R 3.5.0)
## bindr 0.1.1 2018-03-13 CRAN (R 3.5.0)
## bindrcpp 0.2.2 2018-03-29 CRAN (R 3.5.0)
## Biobase 2.40.0 2018-05-01 Bioconductor
## BiocGenerics 0.26.0 2018-05-01 Bioconductor
## BiocParallel 1.14.2 2018-07-08 cran (@1.14.2)
## bit 1.1-14 2018-05-29 CRAN (R 3.5.0)
## bit64 0.9-7 2017-05-08 CRAN (R 3.5.0)
## bitops 1.0-6 2013-08-17 cran (@1.0-6)
## blob 1.1.1 2018-03-25 CRAN (R 3.5.0)
## broom 0.5.0 2018-07-17 CRAN (R 3.5.0)
## checkmate 1.8.5 2017-10-24 cran (@1.8.5)
## circlize 0.4.4 2018-06-10 cran (@0.4.4)
## cluster 2.0.7-1 2018-04-13 CRAN (R 3.5.1)
## colorspace 1.3-2 2016-12-14 CRAN (R 3.5.0)
## compiler 3.5.1 2018-07-05 local
## ComplexHeatmap 1.18.1 2018-06-19 cran (@1.18.1)
## ConsensusClusterPlus 1.44.0 2018-05-01 cran (@1.44.0)
## cowplot 0.9.3 2018-07-15 cran (@0.9.3)
## crayon 1.3.4 2017-09-16 CRAN (R 3.5.0)
## data.table 1.11.4 2018-05-27 cran (@1.11.4)
## datasets * 3.5.1 2018-07-05 local
## DBI 1.0.0 2018-05-02 CRAN (R 3.5.0)
## DEGreport * 1.17.5 2018-09-04 local (lpantano/DEGreport@NA)
## DelayedArray 0.6.5 2018-08-15 cran (@0.6.5)
## DESeq2 1.20.0 2018-05-01 Bioconductor
## devtools 1.13.6 2018-06-27 CRAN (R 3.5.0)
## digest 0.6.16 2018-08-22 CRAN (R 3.5.0)
## dplyr 0.7.6 2018-06-29 CRAN (R 3.5.1)
## edgeR 3.22.3 2018-06-21 cran (@3.22.3)
## evaluate 0.11 2018-07-17 CRAN (R 3.5.0)
## foreign 0.8-71 2018-07-20 CRAN (R 3.5.0)
## Formula 1.2-3 2018-05-03 cran (@1.2-3)
## genefilter 1.62.0 2018-05-01 cran (@1.62.0)
## geneplotter 1.58.0 2018-05-01 cran (@1.58.0)
## GenomeInfoDb 1.16.0 2018-05-01 cran (@1.16.0)
## GenomeInfoDbData 1.1.0 2018-08-31 Bioconductor
## GenomicRanges 1.32.6 2018-07-20 cran (@1.32.6)
## GetoptLong 0.1.7 2018-06-10 cran (@0.1.7)
## ggdendro 0.1-20 2016-04-27 cran (@0.1-20)
## ggplot2 3.0.0 2018-07-03 CRAN (R 3.5.0)
## ggrepel 0.8.0 2018-05-09 cran (@0.8.0)
## GlobalOptions 0.1.0 2018-06-09 cran (@0.1.0)
## glue 1.3.0 2018-07-17 CRAN (R 3.5.0)
## graphics * 3.5.1 2018-07-05 local
## grDevices * 3.5.1 2018-07-05 local
## grid 3.5.1 2018-07-05 local
## gridExtra 2.3 2017-09-09 cran (@2.3)
## gtable 0.2.0 2016-02-26 CRAN (R 3.5.0)
## Hmisc 4.1-1 2018-01-03 cran (@4.1-1)
## htmlTable 1.12 2018-05-26 cran (@1.12)
## htmltools 0.3.6 2017-04-28 CRAN (R 3.5.0)
## htmlwidgets 1.2 2018-04-19 cran (@1.2)
## IRanges 2.14.11 2018-08-24 Bioconductor
## knitr 1.20 2018-02-20 CRAN (R 3.5.0)
## lasso2 1.2-19 2014-05-31 cran (@1.2-19)
## lattice 0.20-35 2017-03-25 CRAN (R 3.5.1)
## latticeExtra 0.6-28 2016-02-09 cran (@0.6-28)
## lazyeval 0.2.1 2017-10-29 CRAN (R 3.5.0)
## limma 3.36.3 2018-08-25 cran (@3.36.3)
## locfit 1.5-9.1 2013-04-20 cran (@1.5-9.1)
## logging 0.7-103 2013-04-12 cran (@0.7-103)
## magrittr 1.5 2014-11-22 CRAN (R 3.5.0)
## MASS 7.3-50 2018-04-30 CRAN (R 3.5.1)
## Matrix 1.2-14 2018-04-13 CRAN (R 3.5.1)
## matrixStats 0.54.0 2018-07-23 cran (@0.54.0)
## memoise 1.1.0 2017-04-21 CRAN (R 3.5.0)
## methods * 3.5.1 2018-07-05 local
## mnormt 1.5-5 2016-10-15 cran (@1.5-5)
## munsell 0.5.0 2018-06-12 CRAN (R 3.5.0)
## nlme 3.1-137 2018-04-07 CRAN (R 3.5.1)
## nnet 7.3-12 2016-02-02 CRAN (R 3.5.1)
## Nozzle.R1 1.1-1 2013-05-15 cran (@1.1-1)
## parallel 3.5.1 2018-07-05 local
## pheatmap * 1.0.10 2018-05-19 CRAN (R 3.5.0)
## pillar 1.3.0 2018-07-14 CRAN (R 3.5.0)
## pkgconfig 2.0.2 2018-08-16 CRAN (R 3.5.0)
## plyr 1.8.4 2016-06-08 CRAN (R 3.5.0)
## psych 1.8.4 2018-05-06 cran (@1.8.4)
## purrr 0.2.5 2018-05-29 CRAN (R 3.5.0)
## R6 2.2.2 2017-06-17 CRAN (R 3.5.0)
## RColorBrewer 1.1-2 2014-12-07 CRAN (R 3.5.0)
## Rcpp 0.12.18 2018-07-23 CRAN (R 3.5.0)
## RCurl 1.95-4.11 2018-07-15 cran (@1.95-4.)
## reshape 0.8.7 2017-08-06 cran (@0.8.7)
## rjson 0.2.20 2018-06-08 cran (@0.2.20)
## rlang 0.2.2 2018-08-16 CRAN (R 3.5.0)
## rmarkdown 1.10 2018-06-11 CRAN (R 3.5.0)
## rpart 4.1-13 2018-02-23 CRAN (R 3.5.1)
## rprojroot 1.3-2 2018-01-03 CRAN (R 3.5.0)
## RSQLite 2.1.1 2018-05-06 CRAN (R 3.5.0)
## rstudioapi 0.7 2017-09-07 CRAN (R 3.5.0)
## S4Vectors 0.18.3 2018-06-08 Bioconductor
## scales 1.0.0 2018-08-09 CRAN (R 3.5.0)
## shape 1.4.4 2018-02-07 cran (@1.4.4)
## splines 3.5.1 2018-07-05 local
## stats * 3.5.1 2018-07-05 local
## stats4 3.5.1 2018-07-05 local
## stemHypoxia * 1.16.0 2018-09-21 Bioconductor
## stringi 1.2.4 2018-07-20 CRAN (R 3.5.0)
## stringr 1.3.1 2018-05-10 CRAN (R 3.5.0)
## SummarizedExperiment 1.10.1 2018-05-11 Bioconductor
## survival 2.42-6 2018-07-13 CRAN (R 3.5.0)
## tibble 1.4.2 2018-01-22 CRAN (R 3.5.0)
## tidyr 0.8.1 2018-05-18 CRAN (R 3.5.0)
## tidyselect 0.2.4 2018-02-26 CRAN (R 3.5.0)
## tools 3.5.1 2018-07-05 local
## utils * 3.5.1 2018-07-05 local
## withr 2.1.2 2018-03-15 CRAN (R 3.5.0)
## XML 3.98-1.16 2018-08-19 cran (@3.98-1.)
## xtable 1.8-3 2018-08-29 cran (@1.8-3)
## XVector 0.20.0 2018-05-01 cran (@0.20.0)
## yaml 2.2.0 2018-07-25 CRAN (R 3.5.0)
## zlibbioc 1.26.0 2018-05-01 cran (@1.26.0)