## ----global_settings, echo = FALSE, message = FALSE----------------------------------------------- library(markdown) library(knitr) knitr::opts_chunk$set( error = FALSE, tidy = FALSE, message = FALSE, fig.align = "center", fig.width = 5, fig.height = 5) options(markdown.HTML.stylesheet = "custom.css") options(width = 100) ## ----expression_example, fig.width = 10, fig.height = 8------------------------------------------- library(ComplexHeatmap) library(circlize) expr = readRDS(paste0(system.file(package = "ComplexHeatmap"), "/extdata/gene_expression.rds")) mat = as.matrix(expr[, grep("cell", colnames(expr))]) base_mean = rowMeans(mat) mat_scaled = t(apply(mat, 1, scale)) type = gsub("s\\d+_", "", colnames(mat)) ha = HeatmapAnnotation(df = data.frame(type = type)) Heatmap(mat_scaled, name = "expression", km = 5, col = colorRamp2(c(-2, 0, 2), c("green", "white", "red")), top_annotation = ha, top_annotation_height = unit(4, "mm"), show_row_names = FALSE, show_column_names = FALSE) + Heatmap(base_mean, name = "base_mean", show_row_names = FALSE, width = unit(5, "mm")) + Heatmap(expr$length, name = "length", col = colorRamp2(c(0, 1000000), c("white", "orange")), heatmap_legend_param = list(at = c(0, 200000, 400000, 60000, 800000, 1000000), labels = c("0kb", "200kb", "400kb", "600kb", "800kb", "1mb")), width = unit(5, "mm")) + Heatmap(expr$type, name = "type", width = unit(5, "mm")) ## ---- fig.width = 10, fig.height = 8, echo = FALSE, results = "hide"------------------------------ library(circlize) library(RColorBrewer) lt = readRDS(paste0(system.file(package = "ComplexHeatmap"), "/extdata/meth.rds")) list2env(lt, envir = environment()) ha = HeatmapAnnotation(df = data.frame(type = c(rep("Tumor", 10), rep("Control", 10))), col = list(type = c("Tumor" = "red", "Control" = "blue"))) ha2 = HeatmapAnnotation(df = data.frame(type = c(rep("Tumor", 10), rep("Control", 10))), col = list(type = c("Tumor" = "red", "Control" = "blue")), show_legend = FALSE) # column order of the methylation matrix which will be assigned to the expressio matrix column_tree = hclust(dist(t(meth))) ht_list = Heatmap(meth, name = "methylation", col = colorRamp2(c(0, 0.5, 1), c("blue", "white", "red")), cluster_columns = column_tree, top_annotation = ha, column_names_gp = gpar(fontsize = 8), km = 5, column_title = "Methylation", column_title_gp = gpar(fontsize = 10), row_title_gp = gpar(fontsize = 10)) + Heatmap(direction, name = "direction", col = c("hyper" = "red", "hypo" = "blue"), column_names_gp = gpar(fontsize = 8)) + Heatmap(expr[, column_tree$order], name = "expression", col = colorRamp2(c(-2, 0, 2), c("green", "white", "red")), cluster_columns = FALSE, top_annotation = ha2, column_names_gp = gpar(fontsize = 8), column_title = "Expression", column_title_gp = gpar(fontsize = 10)) + Heatmap(cor_pvalue, name = "-log10(cor_p)", col = colorRamp2(c(0, 2, 4), c("white", "white", "red")), column_names_gp = gpar(fontsize = 8)) + Heatmap(gene_type, name = "gene type", col = brewer.pal(length(unique(gene_type)), "Set1"), column_names_gp = gpar(fontsize = 8)) + Heatmap(anno, name = "anno_gene", col = brewer.pal(length(unique(anno)), "Set2"), column_names_gp = gpar(fontsize = 8)) + Heatmap(dist, name = "dist_tss", col = colorRamp2(c(0, 10000), c("black", "white")), column_names_gp = gpar(fontsize = 8)) + Heatmap(enhancer, name = "anno_enhancer", col = colorRamp2(c(0, 1), c("white", "orange")), cluster_columns = FALSE, column_names_gp = gpar(fontsize = 8), column_title = "Enhancer", column_title_gp = gpar(fontsize = 10)) ht_global_opt(heatmap_legend_title_gp = gpar(fontsize = 8, fontface = "bold"), heatmap_legend_labels_gp = gpar(fontsize = 8)) draw(ht_list, newpage = FALSE, column_title = "Correspondence between methylation, expression and other genomic features", column_title_gp = gpar(fontsize = 12, fontface = "bold"), heatmap_legend_side = "bottom") invisible(ht_global_opt(RESET = TRUE)) ## ------------------------------------------------------------------------------------------------- library(ComplexHeatmap) library(MASS) library(pvclust) data(Boston) boston.pv <- pvclust(Boston, nboot=100) plot(boston.pv) ## ------------------------------------------------------------------------------------------------- Boston_scaled = apply(Boston, 2, scale) Heatmap(Boston_scaled, cluster_columns = boston.pv$hclust, heatmap_legend_param = list(title = "Boston")) ## ------------------------------------------------------------------------------------------------- set.seed(123) mat = matrix(rnorm(100), 10) heatmap(mat, col = topo.colors(50)) ## ------------------------------------------------------------------------------------------------- Heatmap(mat, col = topo.colors(50), color_space = "sRGB", row_dend_width = unit(2, "cm"), column_dend_height = unit(2, "cm"), row_dend_reorder = TRUE, column_dend_reorder = TRUE) ## ---- fig.width = 10, fig.height = 8-------------------------------------------------------------- mat = readRDS(paste0(system.file("extdata", package = "ComplexHeatmap"), "/measles.rds")) ha1 = HeatmapAnnotation(dist1 = anno_barplot(colSums(mat), bar_width = 1, gp = gpar(col = NA, fill = "#FFE200"), border = FALSE, axis = TRUE)) ha2 = rowAnnotation(dist2 = anno_barplot(rowSums(mat), bar_width = 1, gp = gpar(col = NA, fill = "#FFE200"), border = FALSE, which = "row", axis = TRUE), width = unit(1, "cm")) ha_column = HeatmapAnnotation(cn = function(index) { year = as.numeric(colnames(mat)) which_decade = which(year %% 10 == 0) grid.text(year[which_decade], which_decade/length(year), 1, just = c("center", "top")) }) Heatmap(mat, name = "cases", col = colorRamp2(c(0, 800, 1000, 127000), c("white", "cornflowerblue", "yellow", "red")), cluster_columns = FALSE, show_row_dend = FALSE, rect_gp = gpar(col= "white"), show_column_names = FALSE, row_names_side = "left", row_names_gp = gpar(fontsize = 10), column_title = 'Measles cases in US states 1930-2001\nVaccine introduced 1961', top_annotation = ha1, top_annotation_height = unit(1, "cm"), bottom_annotation = ha_column, bottom_annotation_height = grobHeight(textGrob("1900"))) + ha2 decorate_heatmap_body("cases", { i = which(colnames(mat) == "1961") x = i/ncol(mat) grid.lines(c(x, x), c(0, 1), gp = gpar(lwd = 2)) grid.text("Vaccine introduced", x, unit(1, "npc") + unit(5, "mm")) }) ## ---- fig.width = 7------------------------------------------------------------------------------- ha = HeatmapAnnotation(df = data.frame(a_long_long_long_annotation_name = runif(10)), show_legend = FALSE) ht = Heatmap(matrix(rnorm(100), 10), name = "foo", top_annotation = ha) # because the default width for row cluster is 1cm padding = unit.c(unit(2, "mm"), grobWidth(textGrob("a_long_long_long_annotation_name")) - unit(1, "cm"), unit(c(2, 2), "mm")) draw(ht, padding = padding) decorate_annotation("a_long_long_long_annotation_name", { grid.text("a_long_long_long_annotation_name", 0, 0.5, just = "right") }) ## ------------------------------------------------------------------------------------------------- sessionInfo()