「ggplot2」パッケージのようにコマンドを”+”で繋げてヒートマップの体裁を調整するパッケージの紹介です。ヒートマップの複数配置だけでなく、セルの範囲を指定して枠線を引くこともできます。
パッケージバージョンは0.2.0。実行コマンドはR version 4.2.2で確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール
install.packages("devtools")
devtools::install_github("zwdzwd/wheatmap")
実行コマンドの紹介
詳細はコマンド、パッケージのヘルプを確認してください。
#パッケージの読み込み
library("wheatmap")
###データ例の作成#####
#ヒートマップ本体用
TestData <- matrix(rnorm(50), 10, 5)
#内容確認
head(TestData, 3)
[,1] [,2] [,3] [,4] [,5]
[1,] -0.3975247 0.6574488 -0.1705157 -2.2595841 0.5295949
[2,] -0.1779993 -0.4997333 -2.3134800 -0.4528057 1.8607815
[3,] 0.2237872 -0.0109689 -0.8062991 0.5612404 1.0131687
#カラーバー用データ
#縦方向用
VColo <- c(1:10)
#横方向用
HColo <- c(1:5)
########
#ヒートマップオブジェクトの作成:WHeatmapコマンド
#オブジェクト名の設定:nameコマンド
HeatMap <- WHeatmap(TestData, name = "TestHeatMap")
#プロット
HeatMap
#カラーバーの付与:WColorBarV,WColorBarHコマンド
#描写位置を指定する:TopOf,LeftOf,RightOfコマンド
#ヒートマップオブジェクト名を指定:xオプション
#色の指定:cmp:オプション
#カラーマップの作成:CMParコマンド
BarHeatMap <- HeatMap +
WColorBarV(VColo, LeftOf(x = "TestHeatMap"), name = "TestBarV") +
WColorBarH(HColo, TopOf(x = "TestHeatMap"), name = "TestBarH",
cmp = CMPar(brewer.name = "Set2"))
#プロット
BarHeatMap
#データをクラスタリング処理:both.clusterコマンド
#データを指定:matオプション
#クラスタリング処理:"ward.D","ward.D2","single","complete","average",
#"mcquitty","median","centroid"を指定可能
CCData <- both.cluster(mat = TestData, hc.method = "single")
#データ構造を確認
str(CCData)
List of 4
$ row.clust :List of 7
..$ merge : int [1:9, 1:2] -3 -7 -2 -4 -5 -9 -8 -1 7 -6 ...
..$ height : num [1:9] 0.82 1.72 2.1 2.72 2.82 ...
..$ order : int [1:10] 8 4 7 10 1 9 5 2 3 6
..$ labels : NULL
..$ method : chr "complete"
..$ call : language hclust(d = d.row)
..$ dist.method: chr "euclidean"
..- attr(*, "class")= chr "hclust"
$ column.clust:List of 7
..$ merge : int [1:4, 1:2] -2 -1 1 -5 -3 -4 2 3
..$ height : num [1:4] 3.81 4.41 5.61 6.83
..$ order : int [1:5] 5 2 3 1 4
..$ labels : NULL
..$ method : chr "complete"
..$ call : language hclust(d = d.column)
..$ dist.method: chr "euclidean"
..- attr(*, "class")= chr "hclust"
$ mat : num [1:10, 1:5] -2.0304 -0.0242 0.0406 -0.498 0.5296 ...
$ extra : list()
#デンドログラムを追加:WDendrogramコマンド
#デンドログラム追加対象のオブジェクト名は
#WColorBarV,WColorBarHコマンドで設定した名前
DenBarHeatMap <- BarHeatMap +
WDendrogram(CCData$row.clust, LeftOf("TestBarV"), facing = "right") +
WDendrogram(CCData$column.clust, TopOf("TestBarH"), facing = "bottom")
#プロット
DenBarHeatMap
#レイアウトの確認:printコマンド
print(DenBarHeatMap, layout.only = TRUE)
###こんな使い方ができます#####
DenBarHeatMap + WHeatmap(TestData, RightOf("TestHeatMap"), "TestHeatMap2",
cmp = CMPar(brewer.name = "Set2"))
########
#特定範囲を線で囲む:WRectコマンド
#適応するオブジェクトを指定:objオプション,指定はaxis/horizontal or vertical
DenBarHeatMap +
WRect(obj = "TestHeatMap", x.span = c(2, 3), y.span = c(3, 3),
color = "red", lwd = 10) +
WRect(obj = "TestBarH", x.span = c(2, 4), y.span = c(1, 1),
color = "red", lwd = 10)
出力例
・WHeatmapコマンド

・WColorBarV,WColorBarHコマンド

・WDendrogramコマンド

・printコマンド

・こんな使い方ができます

・WRectコマンド

少しでも、あなたのウェブや実験の解析が楽になりますように!!