This package allows you to fine-tune the appearance of your heatmaps. For example, you can easily add a graph showing the distribution of data to a heatmap or display heatmaps side by side.
Many functions are included in the “ComplexHeatmap” package. Since I cannot show you all of them, these are examples of some commands. I think they are sufficient for basic use. Please check the Github page below for more information.
・jokergoo/ComplexHeatmap
https://github.com/jokergoo/ComplexHeatmap
Package version is 2.10.0. Checked with R version 4.2.2.
Install Package
Run the following command.
#Install Package if (!require("BiocManager", quietly = TRUE)){ install.packages("BiocManager") } BiocManager::install("ComplexHeatmap", force = TRUE)
Example
See the command and package help for details.
#Loading the library library("ComplexHeatmap") ###Creating Data##### n <- 30 TestData1 <- as.matrix(data.frame(row.names = sample(paste0("Group", 1:n), n, replace = FALSE), Data1 = rnorm(n) + rnorm(n) + rnorm(n), Data2 = rnorm(n) + rnorm(n) + rnorm(n), Data3 = sample(0:1, n, replace = TRUE))) TestData2 <- as.matrix(data.frame(Data1 = sample(c(LETTERS[15:24], NA), n, replace = TRUE), Data2 = sample(LETTERS[15:24], n, replace = TRUE), Data3 = sample(c(LETTERS[15:24], NA), n, replace = TRUE))) ####### ###Plot Heatmap: Heatmap command##### Heatmap(TestData1) ######## ###Specify cell color: col option##### #Use the "scales" package if (!require("scales", quietly = TRUE)){ install.packages("scales");require("scales") } x <- seq(0, 1, length = 10) ColPal <- seq_gradient_pal(c("#e1e6ea", "#505457", "#4b61ba", "#a87963", "#d9bb9c", "#756c6d"))(x) #Example: For a continuous variable heatmap Heatmap(TestData1, col = ColPal) #Example: For a heatmap of category variables #Specify the color of missing values: na_col option #Create a labeled character array with the base::structure command CateColPal <- structure(ColPal, names = LETTERS[15:24]) Heatmap(TestData2, col = CateColPal, na_col = "yellow") ######## ###Set column and row titles##### #Column side: column_title option Heatmap(TestData1, col = ColPal, column_title = "Column TITLE") #Row side: row_title option Heatmap(TestData1, col = ColPal, row_title = "Row TITLE") ######## ###Position of column and row titles##### #Column side: column_title_side option;"top","bottom" Heatmap(TestData1, col = ColPal, column_title = "Column TITLE", column_title_side = "bottom") #Row side: row_title_side option;"left","right" Heatmap(TestData1, col = ColPal, row_title = "Column TITLE", row_title_side = "right") ######## ###Rotate column and row titles##### #Column side: column_title_rot option Heatmap(TestData1, col = ColPal, column_title = "Column TITLE", column_title_side = "bottom", column_title_rot = 90) #Row side: row_title_rot option Heatmap(TestData1, col = ColPal, row_title = "Column TITLE", row_title_side = "right", row_title_rot = 0) ######## ###Legend title setting: name option##### Heatmap(TestData1, col = ColPal, name = "Legend TITLE") ##### ###Specify distance and clustering##### ###Distance:clustering_distance_rows option, clustering_distance_columns optipn##### #euclidean","maximum","manhattan","canberra","binary","minkowski", #"pearson","spearman","kendall" ###Clustering:clustering_method_rows,clustering_method_columnオプション##### #"ward.D","ward.D2","single","complete","average"(= UPGMA),"mcquitty"(= WPGMA), #"median"(= WPGMC),"centroid"(= UPGMC)の指定が可能 Heatmap(TestData1, clustering_distance_rows = "pearson", clustering_method_rows = "single") ######## ###Whether clusters are displayed or not##### #Column side: cluster_columns option #Row side: cluster_rows option Heatmap(TestData1, cluster_rows = TRUE, cluster_columns = FALSE) ######## ###Cluster display position##### #Column side: row_dend_side option:"left","right" #Row side: column_dend_side option:"top","bottom" Heatmap(TestData1, row_dend_side = "right", column_dend_side = "bottom") ######## ###Row-side cluster split and space adjustment##### #Split: km option #Space:gap option #Set label color after splitting: row_names_gp option #Format is specified by gpar command; color: col,label size:fontsize; default 14 #For continuous variables Heatmap(TestData1, km = 2, gap = unit(10, "mm"), row_names_gp = gpar(col = c("green", "orange"), fontsize = c(10, 14))) #For categorical variables #Split:split option; specify contents as string #Total 30 data divided into 3 parts of 10 each Heatmap(TestData2, split = rep(LETTERS[1:3], each = 10), gap = unit(5, "mm")) ######## ###Sort columns, rows######## #Column side: column_order option #Row side: row_order option Heatmap(TestData1, cluster_rows = FALSE, cluster_columns = FALSE, column_order = c("Data3", "Data2", "Data1"), row_order = paste0("Group", 30:1)) ######## ###Set column and row labels##### #Column side: column_names_gp option #Row side: row_names_gp option #Format is specified by gpar command; color: col,label size:fontsize; default 14 Heatmap(TestData1, column_names_gp = gpar(col = c(rep("red", 1), rep("blue", 2)), fontsize = 20), row_names_gp = gpar(col = c(rep("red", 20), rep("blue", 10)), fontsize = 10)) ######## ###Set of each cell border: rect_gp option##### #Format is specified by gpar command; col, lty, lwd Heatmap(TestData1, rect_gp = gpar(col = "black", lty = 1, lwd = 3)) ######## ###Plot heatmap with different width: width option##### Width1 <- Heatmap(TestData1, width = 2) Width2 <- Heatmap(TestData2, width = unit(2, "cm")) Width1 + Width2 ##### ###Plot heatmaps side by side: draw command##### #Stores the result of the heatmap command to the argument HeatMap1 <- Heatmap(TestData1) HeatMap2 <- Heatmap(TestData2) #Plot draw(HeatMap1 + HeatMap2) ######## ###Customize the appearance when using the Draw command##### #Each option is common to the Heatmap command draw(HeatMap1 + HeatMap2, row_title = "Row title", row_title_gp = gpar(col = "blue"), column_title = "Column title", column_title_side = "bottom", column_title_gp = gpar(col = "red")) ######## ###Annotate##### #HeatmapAnnotation commna #A simple example AnotationDF <- data.frame(type = c(rep("a", 2), rep("b", 2))) #Create annotation data Anotation <- HeatmapAnnotation(df = AnotationDF) #Plot draw(Anotation, 1:4) #Graphs and texts can be added to annotations with the commands: #anno_points(),anno_barplot(),anno_boxplot(),anno_histogram(), #anno_density(),anno_text() #Create annotation data with additional graphs #Create data for upper display TopAnotation <- HeatmapAnnotation(boxplot = anno_boxplot(as.matrix(TestData1))) #描写 Heatmap(TestData1, top_annotation = TopAnotation)
Output Example
Some from the examples.
・km option
・width option
・draw command
・HeatmapAnnotation command
I hope this makes your analysis a little easier !!