「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コマンド
少しでも、あなたのウェブや実験の解析が楽になりますように!!