ヒートマップの細かな体裁調整が可能なパッケージの紹介です。非常に多くの機能が搭載されています。例えば、ヒートマップにデータ分布を示す図の追加やヒートマップを並べて描写することも簡単に可能です。
多くの機能が搭載されています。全てを紹介しきれないので、一部のコマンドを紹介します。基本的な利用には十分と思います。紹介しきれなかった機能は、下記Githubページを確認いただければと思います。
・GitHubのjokergoo/ComplexHeatmap
https://github.com/jokergoo/ComplexHeatmap
パッケージバージョンは2.10.0。実行コマンドはwindows 11のR version 4.1.2で確認しています。
パッケージのインストール
下記、コマンドを実行してください。
#パッケージのインストール if (!require("BiocManager", quietly = TRUE)){ install.packages("BiocManager") } BiocManager::install("ComplexHeatmap", force = TRUE)
実行コマンド
詳細はコメント、パッケージのヘルプを確認してください。
#パッケージの読み込み library("ComplexHeatmap") ###データ例の作成##### 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))) ####### ###ヒートマップの基本的な描写:Heatmapコマンド##### Heatmap(TestData1) ######## ###セルの色を指定:colオプション##### #scalesパッケージで色を設定 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) #例えば,連続変数のヒートマップの場合 Heatmap(TestData1, col = ColPal) #例えば,カテゴリ変数のヒートマップの場合 #欠損値の色を指定:na_colオプション #structureコマンドでラベル付きの文字配列を作成 CateColPal <- structure(ColPal, names = LETTERS[15:24]) Heatmap(TestData2, col = CateColPal, na_col = "yellow") ######## ###列および行タイトルの設定##### #列側:column_titleオプション Heatmap(TestData1, col = ColPal, column_title = "Column TITLE") #行側:row_titleオプション Heatmap(TestData1, col = ColPal, row_title = "Row TITLE") ######## ###列および行タイトルの位置設定##### #列側:column_title_sideオプション;"top","bottom"の設定が可能 Heatmap(TestData1, col = ColPal, column_title = "Column TITLE", column_title_side = "bottom") #行側:row_title_sideオプション;"left","right"の設定が可能 Heatmap(TestData1, col = ColPal, row_title = "Column TITLE", row_title_side = "right") ######## ###列および行タイトルの回転##### #列側:column_title_rot Heatmap(TestData1, col = ColPal, column_title = "Column TITLE", column_title_side = "bottom", column_title_rot = 90) #行側:row_title_rot Heatmap(TestData1, col = ColPal, row_title = "Column TITLE", row_title_side = "right", row_title_rot = 0) ######## ###凡例タイトルの設定:nameオプション##### Heatmap(TestData1, col = ColPal, name = "Legend TITLE") ##### ###クラスタリング距離計算と結合方法の指定##### ###距離計算:clustering_distance_rows,clustering_distance_columnsオプション##### #euclidean","maximum","manhattan","canberra","binary","minkowski", #"pearson","spearman","kendall"の指定が可能 ###結合方法: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") ######## ###クラスタリングの表示有無##### #列側:cluster_columnsオプション #行側:cluster_rowsオプション Heatmap(TestData1, cluster_rows = TRUE, cluster_columns = FALSE) ######## ###クラスタリングの表示位置##### #列側:row_dend_sideオプション:"left","right"の指定が可能 #行側:column_dend_sideオプション:"top","bottom"の指定が可能 Heatmap(TestData1, row_dend_side = "right", column_dend_side = "bottom") ######## ###行側クラスタリングの分割と間隔調整##### #分割:kmオプション #間隔調整:gapオプション;単位はunitで指定 #分割後のラベル色設定:row_names_gpオプション #書式はgparオプションで指定;色:col,ラベルサイズ:fontsize;初期値14 #連続変数の場合 Heatmap(TestData1, km = 2, gap = unit(10, "mm"), row_names_gp = gpar(col = c("green", "orange"), fontsize = c(10, 14))) #カテゴリ変数の場合 #分割:splitオプション;内容を文字列で指定 #総数30のデータを各10で3分割 Heatmap(TestData2, split = rep(LETTERS[1:3], each = 10), gap = unit(5, "mm")) ######## ###列,行の並び替え######## #列側:column_orderオプション #行側:row_orderオプション Heatmap(TestData1, cluster_rows = FALSE, cluster_columns = FALSE, column_order = c("Data3", "Data2", "Data1"), row_order = paste0("Group", 30:1)) ######## ###列,行ラベルの設定##### #列側:column_names_gpオプション #行側:row_names_gpオプション #書式はgparオプションで指定;色:col,ラベルサイズ:fontsize;初期値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)) ######## ###各セル枠線の設定:rect_gpオプション##### #書式はgparオプションで指定;色:col,線種:lty,太さ:lwd Heatmap(TestData1, rect_gp = gpar(col = "black", lty = 1, lwd = 3)) ######## ###ヒートマップの横幅を変えて描写:widthオプション##### Width1 <- Heatmap(TestData1, width = 2) Width2 <- Heatmap(TestData2, width = unit(2, "cm")) Width1 + Width2 ##### ###ヒートマップを並べて描写:drawコマンド##### #Heatmapコマンドの結果を引数へ格納 HeatMap1 <- Heatmap(TestData1) HeatMap2 <- Heatmap(TestData2) #描写 draw(HeatMap1 + HeatMap2) ######## ###drawコマンド使用時の体裁調整##### #各オプションはHeatmapコマンドと共通 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")) ######## ###アノテーション付与##### #HeatmapAnnotationコマンド #簡単な例 AnotationDF <- data.frame(type = c(rep("a", 2), rep("b", 2))) #アノテーションデータの作成 Anotation <- HeatmapAnnotation(df = AnotationDF) #描写 draw(Anotation, 1:4) #アノテーションにはanno_points(),anno_barplot(), #anno_boxplot(),anno_histogram(),anno_density(),anno_text() #のコマンドでグラフおよびテキストを追加できます #グラフを追加したアノテーションデータの作成 #上部表示用データの作成 TopAnotation <- HeatmapAnnotation(boxplot = anno_boxplot(as.matrix(TestData1))) #描写 Heatmap(TestData1, top_annotation = TopAnotation)
出力例
コマンド例から一部を紹介
・kmオプション
・widthオプション
・drawコマンド
・HeatmapAnnotationコマンド
少しでも、あなたの解析が楽になりますように!!