Rで解析:ヒートマップの細い体裁が調整可能「wheatmap」パッケージ

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

「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コマンド

WHeatmap

・WColorBarV,WColorBarHコマンド

WColorBarV,WColorBarH

・WDendrogramコマンド

WDendrogram

・printコマンド

print

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

konnnatukaikata

・WRectコマンド

WRect

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

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