R を使ったヒートマップの作り方
UB3/informatics/r/heatmap_r
このページの最終更新日: 2024/09/30関連ページ
広告
概要: ヒートマップとは
下にあるような、値を色の違いで表した図をヒートマップ heatmap という (図は Public domain)。R には、ヒートマップを作る関数はたくさんある。このページでは、それらの関数を概観する。 詳細なヒートマップ作成方法は、内容が増えてきた関数から個別のページを作ってまとめていく。
ヒートマップを作る際には、データを並べ替えるクラスタリング clustering も同時に行われることが多い。下の図では、X および Y の 2 つの軸でクラスタリングが行われている。
有意な違いのあるセルに * をつける場合も多い。このやり方は このページ などに書かれている。2 つのデータフレームを位置で対応させなければならないので、ちょっと面倒。
heatmap
R デフォルトの関数。heatmap(A) で、A は行列。read.csv などで読み込んだデータは、リスト形式 list になっている場合がある。行列に変換する関数 as.matrix も覚えておくと便利だろう。
例えば、組み込みデータセット の一つ、mtcars を使って以下のようにヒートマップを作る。
heatmap 関数には、以下のようなオプションがある。個人的には、この R デフォルトの関数が一番使いやすいように思う。
Colv, Rowv |
Colv = NA で列をクラスタリングしなくなる。行のクラスタリング解除は Rowv = NA である。 |
scale |
scale = c("row/column/none") で、行ごと、列ごとの色の設定などを指定。 |
heatmap.2
gplots パッケージに含まれる関数。
greenred(50) は、 緑と赤で 50 段階で色分け。trace="none" は青い トレースの線をトレースの線を 消す。
geom_tile
ggplot2 パッケージに含まれる関数。ヒートマップは作れるが、クラスタリング機能がない。クラスタリングしたい場合は、他の関数と組み合わせる必要がある。
詳細は ggplot2 によるヒートマップ作成 のページへ。
pheatmap
pheatmap ライブラリに含まれる。色がきれいだと思う。
参考ページ RDocumentation, GitHub.
クラスタリング |
|
行列の名前、位置 |
残念ながら、row names を左に置くためのオプションはない。不可能ではない。また、ComplexHeatmap::pheatmap という関数を使えば、ComplexHeatmap のオプションを使いつつ pheatmap の色にできるようだ。 |
ComplexHeatmap
複雑なヒートマップを作りたい場合 (1,3)。インストールは BiocManager から。BiocManager::install ("ComplexHeatmap") とする。
以下のオプションの詳細は RDocumentation に。
ComplexHeatmap::pheatmap という関数で、pheatmap の色合いの ComplexHeatmap が作れるようだ。
クラスタリング |
この他、k-means 法によるクラスタリング、外部の関数で行ったクラスタリングの読み込みなどが可能。詳細は ComplexHeatmap 関数: ヒートマップのクラスタリング を参照のこと。 row_split = 2 のようにして、クラスタリングにしたがってヒートマップに切れ目を入れることもできる。この方法も、リンク先のページに移動した。 |
行列の名前、位置、角度 |
|
デンドログラム表示、位置 |
|
レジェンド表示 |
TRUE または FALSE |
na_col |
この関数は、NA があってもクラスタリングをすることができる (4)。ただし、距離行列を計算することができない場合にはクラスタリングできない (参考)。全て NA の列があったりすると、距離行列は計算できない。 Hclust という関数をクラスタリングに使っているので、これは Hclust の特徴と思われる。 |
name |
name = "parameter" のようにして、legend の名前を決める。 |
cell_fun |
定めた関数に応じて、それぞれのセルにグラフィックを追加する。有意なセルにアスタリスクを表示させるのはよくある表現法である。方法は このページ や文献 4 の cell_fun の項目に書かれている。 |
col |
色の設定。circlize というライブラリを読み込み、col_fun = colorRamp2(c(0, 5, 10), c("blue", "white", "red")) のように col_fun を設定する。これを col = col_fun として Heatmap 関数内で参照する。 |
width |
Heatmap 部分の全体の大きさを設定。それぞれのセルは自動で同じ大きさになる。行名、列名の部分のサイズは、これではなく下にある column_names_max_height などで指定する。 unit を使い、width = unit(5.0, "cm") のように指定する。 Heatmap を作る mat を使って、width = ncol(mat)*unit(5, "mm"), height = nrow(mat)*unit(5, "mm") とすれば、各パネルの大きさを揃えることができる。 |
row_names_max_width |
名前が長いと、端が切れてしまって全部表示されないことがある。その場合はこれで設定。同じように、unit を使って row_names_max_width = unit(2.0, "cm") のようにする。 |
heatmap_legend_param |
Legend に関係するパラメーターを設定する。list の中に入れる。
|
superheat 関数
使い方を丁寧にまとめたページがある (2)。
devtools::install_github("rlbarter/superheat") でインストールできる。
広告
References
Gu and Hübschmann, 2022a. Make interactive complex heatmaps in R. Bioinformatics 38, 1460-1462, 2022.- 複雑なデータをヒートマップで可視化するためのRパッケージ Superheat. Link: Last access 2022/05/20.
- Rで解析: 理想のヒートマップ作成に役に立ちます「ComplexHeatmap」パッケージ. Link: Last access 2022/05/21.
- ComplexHeatmap Complete Reference. Link: Last access 2022/05/22.
コメント欄
サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。