R: ヒートマップに行アノテーションを追加する

UB3/informatics/r/heatmap_annotation

このページの最終更新日: 2022/06/10


  1. ComplexHeatmap でアノテーションを追加する
  2. pheatmap でアノテーションを追加する

広告

ComplexHeatmap でアノテーションを追加

ComplexHeatmap 関数で、右側または左側にアノテーションを追加する方法をまとめる。heatmap の行に対して情報を追加することになるので、row annotation という。


組み込みデータセット mtcars を例として使用。mtcars はこんな感じのデータセット。車の性能がまとめられている。

Rの組み込みデータセット mtcars

まずはただ heatmap を作って様子を見てみる。

Heatmap(mtcars)

デフォルトの色は赤 - 青、両軸でクラスタリングされるので、以下のような図が出力される。排気量 displacement と馬力 horse power, hp の数値が大きいので、その他の部分が真っ青になってしまう。

さらに、cyl と gear はシリンダーとギアの数で、整数値をもつ離散変数。vs と am は、エンジン (0 = V-shaped, 1 = straight) と Transmission (0 = automatic, 1 = manual) で、0 または 1 の二値変数である。全部をそのまま heatmap に投げ込むのは正しくない。

Rで作成したmtcarsのヒートマップ

なお、R デフォルトの heatmap 関数を使うとこんな色合いになる (クリックで拡大)。

Rで作成したmtcarsのヒートマップ

さらに、input が matrix でなく dataframe なので変換したという警告メッセージが出る。

Warning message: The input is a data frame-like object, convert it to a matrix.

heatmap を作る場合は、as.matrix でマトリクスに変換するのが基本である (→ R の行列とデータフレームの違い)。さらに cyl, gear, vs, am を除いて、以下のようにする。

mtcars2 = select(mtcars, -c(cyl, gear, vs, am))
Heatmap(as.matrix(mtcars2))

Rで作成したmtcarsのヒートマップ
広告

右側に、先ほど取り除いた cyl や gear を追加してみよう。width という方法を使う。

別々のヒートマップをそれぞれ width1, width2... というオブジェクトに入れて、width1 + width2 のようにして表示させるイメージ。

width1 = Heatmap(as.matrix(mtcars2),
show_row_names = TRUE, row_names_side = "left", name = "param")

width2 = Heatmap(as.matrix(mtcars$cyl), name = "cyl")
width3 = Heatmap(as.matrix(mtcars$gear), name = "gear")

width1 + width2 + width3

Rで作成したmtcarsのヒートマップ

vs, am は 0/1 の二値変数なので、それらを赤と緑で指定するパターン。フォントサイズの変更などもして見やすくした。

Rで作成したmtcarsのヒートマップ
広告

References

Script: ub_related/R_script/Practice_heatmap_1_v1.R

  1. R : matrixとdata.frameの違い. Link: Last access 2022/05/21.

コメント欄

各ページのコメント欄を復活させました。スパム対策のため、以下の禁止ワードが含まれるコメントは表示されないように設定しています。レイアウトなどは引き続き改善していきます。「管理人への質問」「フォーラム」へのバナーも引き続きご利用下さい。

禁止ワード: http, the, м (ロシア語のフォントです)


このページにコメント

Name:


Comment:



これまでに投稿されたコメント

Date Name Comment