Rで解析:理想のヒートマップ作成に役に立ちます「ComplexHeatmap」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

ヒートマップの細かな体裁調整が可能なパッケージの紹介です。非常に多くの機能が搭載されています。例えば、ヒートマップにデータ分布を示す図の追加やヒートマップを並べて描写することも簡単に可能です。

多くの機能が搭載されています。全てを紹介しきれないので、一部のコマンドを紹介します。基本的な利用には十分と思います。紹介しきれなかった機能は、下記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オプション

km

・widthオプション

width

・drawコマンド

draw

・HeatmapAnnotationコマンド


少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました