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)
#&#20869;&#23481;&#30906;&#35469;
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
#&#12459;&#12521;&#12540;&#12496;&#12540;&#29992;&#12487;&#12540;&#12479;
#&#32294;&#26041;&#21521;&#29992;
VColo <- c(1:10)
#&#27178;&#26041;&#21521;&#29992;
HColo <- c(1:5)
########

#&#12498;&#12540;&#12488;&#12510;&#12483;&#12503;&#12458;&#12502;&#12472;&#12455;&#12463;&#12488;&#12398;&#20316;&#25104;:WHeatmap&#12467;&#12510;&#12531;&#12489;
#&#12458;&#12502;&#12472;&#12455;&#12463;&#12488;&#21517;&#12398;&#35373;&#23450;:name&#12467;&#12510;&#12531;&#12489;
HeatMap <- WHeatmap(TestData, name = "TestHeatMap")
#&#12503;&#12525;&#12483;&#12488;
HeatMap

#&#12459;&#12521;&#12540;&#12496;&#12540;&#12398;&#20184;&#19982;:WColorBarV,WColorBarH&#12467;&#12510;&#12531;&#12489;
#&#25551;&#20889;&#20301;&#32622;&#12434;&#25351;&#23450;&#12377;&#12427;:TopOf,LeftOf,RightOf&#12467;&#12510;&#12531;&#12489;
#&#12498;&#12540;&#12488;&#12510;&#12483;&#12503;&#12458;&#12502;&#12472;&#12455;&#12463;&#12488;&#21517;&#12434;&#25351;&#23450;:x&#12458;&#12503;&#12471;&#12519;&#12531;
#&#33394;&#12398;&#25351;&#23450;:cmp:&#12458;&#12503;&#12471;&#12519;&#12531;
#&#12459;&#12521;&#12540;&#12510;&#12483;&#12503;&#12398;&#20316;&#25104;:CMPar&#12467;&#12510;&#12531;&#12489;
BarHeatMap <- HeatMap +
  WColorBarV(VColo, LeftOf(x = "TestHeatMap"), name = "TestBarV") +
  WColorBarH(HColo, TopOf(x = "TestHeatMap"), name = "TestBarH",
             cmp = CMPar(brewer.name = "Set2"))
#&#12503;&#12525;&#12483;&#12488;
BarHeatMap

#&#12487;&#12540;&#12479;&#12434;&#12463;&#12521;&#12473;&#12479;&#12522;&#12531;&#12464;&#20966;&#29702;:both.cluster&#12467;&#12510;&#12531;&#12489;
#&#12487;&#12540;&#12479;&#12434;&#25351;&#23450;:mat&#12458;&#12503;&#12471;&#12519;&#12531;
#&#12463;&#12521;&#12473;&#12479;&#12522;&#12531;&#12464;&#20966;&#29702;:"ward.D","ward.D2","single","complete","average",
#"mcquitty","median","centroid"&#12434;&#25351;&#23450;&#21487;&#33021;
CCData <- both.cluster(mat = TestData, hc.method = "single")
#&#12487;&#12540;&#12479;&#27083;&#36896;&#12434;&#30906;&#35469;
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()

#&#12487;&#12531;&#12489;&#12525;&#12464;&#12521;&#12512;&#12434;&#36861;&#21152;:WDendrogram&#12467;&#12510;&#12531;&#12489;
#&#12487;&#12531;&#12489;&#12525;&#12464;&#12521;&#12512;&#36861;&#21152;&#23550;&#35937;&#12398;&#12458;&#12502;&#12472;&#12455;&#12463;&#12488;&#21517;&#12399;
#WColorBarV,WColorBarH&#12467;&#12510;&#12531;&#12489;&#12391;&#35373;&#23450;&#12375;&#12383;&#21517;&#21069;
DenBarHeatMap <- BarHeatMap +
  WDendrogram(CCData$row.clust, LeftOf("TestBarV"), facing = "right") +
  WDendrogram(CCData$column.clust, TopOf("TestBarH"), facing = "bottom")
#&#12503;&#12525;&#12483;&#12488;
DenBarHeatMap

#&#12524;&#12452;&#12450;&#12454;&#12488;&#12398;&#30906;&#35469;:print&#12467;&#12510;&#12531;&#12489;
print(DenBarHeatMap, layout.only = TRUE)

###&#12371;&#12435;&#12394;&#20351;&#12356;&#26041;&#12364;&#12391;&#12365;&#12414;&#12377;#####
DenBarHeatMap + WHeatmap(TestData, RightOf("TestHeatMap"), "TestHeatMap2",
                         cmp = CMPar(brewer.name = "Set2"))
########

#&#29305;&#23450;&#31684;&#22258;&#12434;&#32218;&#12391;&#22258;&#12416;:WRect&#12467;&#12510;&#12531;&#12489;
#&#36969;&#24540;&#12377;&#12427;&#12458;&#12502;&#12472;&#12455;&#12463;&#12488;&#12434;&#25351;&#23450;:obj&#12458;&#12503;&#12471;&#12519;&#12531;,&#25351;&#23450;&#12399;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をコピーしました