Rによるヒートマップの作り方 【遺伝子クラスタリング・色の変更も】
この記事のタイトルとURLをコピーする
執筆者
【生命医学をハックする】運営者 (@biomedicalhacks)。生命科学研究者、医師・医学博士。プロフィールはこちら

例えば遺伝子発現変動解析など、生命科学・医学研究ではヒートマップを書くことは少なくありません。この記事では、Rを使ってヒートマップを書く実際の手順を、生命科学の仮想データを使って紹介します。

ヒートマップを書くことができる代表的なR関数

Rにはヒートマップを書くための関数やパッケージがいくつもあります。まずはその代表的なものをまとめます。

ヒートマップを書けるRの関数
heatmap関数 (デフォルト)
heatmap.2関数 (gplotsパッケージ)
heatmap.plus関数 (heatmap.plusパッケージ)
aheatmap関数 (NMFパッケージ)
pheatmap関数 (pheatmapパッケージ)
heatmaply関数 (heatmaplyパッケージ)
ComplexHeatmap関数 (ComplexHeatmapパッケージ)
Superheat関数 (Superheatパッケージ)
Heatplus関数 (Heatplusパッケージ)
iheatmapr関数 (iheatmaprパッケージ)

また、そもそもすでにあるヒートマップと同じ用に書きたい場合にはそのコードの該当する部分を置き換えるだけで済むので圧倒的に早いです。Rにおけるグラフの書き方入門【簡単なスクリプトコピペでOK】に具体的な方法をまとめています。

heatmap関数を使ったヒートマップの作り方

それではデフォルトで入っているheatmap関数を使ったヒートマップの作り方を見ていきます。

まずはデータを用意します。今回はランダムに乱数から生成します。

x <- matrix(rnorm(1000), ncol = 5)
colnames(x) <- paste0("sample", 1:ncol(x))
rownames(x) <- paste0("gene", 1:nrow(x))
head(x)

このようなデータができました。

201016 1

heatmap関数にこれを渡すことで、自動的にヒートマップを書いてくれます。

heatmap(x)

201016 2

デフォルトでは自動的にクラスタリングが行われますが、これを行わないようにするにはRowv = NA (行のクラスタリングをしない)やColv = NA (列のクラスタリング)と指定すればOKです。

例えば行はそのままクラスタリングするが、列はしないということであればこのようになります。

heatmap(x, Colv = NA)

201016 3

色の指定はgplotsパッケージで提供されている色のセットを使うと楽です。まずはgplotsパッケージを読み込みます。

例えば、赤と青で表現したい場合には

heatmap(x, col=bluered(256))

201016 4

もちろん、自分で色を自由に作ることもできます。まずはcolorpanel関数でパレットを作ります。ここで水色→白→赤紫に変化していく色合いで作ってみます。

mycolor <- gplots::colorpanel(n = 256, low = "deepskyblue", mid = "white", high = "violetred")

あとはheatmap関数のcol引数に自作のパレットを割り当てるだけです。

heatmap(x, col=mycolor)

201016 5

より複雑なヒートマップ

複雑なヒートマップはComplexHeatmapパッケージを使うと便利です。

例えば脳腫瘍のサンプルにおけるメチル化をヒートマップで表示するとか。
201016 6

がんにおけるさまざまなmutationを可視化するとか。
201016 7

シングルセルRNA-seq解析で得られた細胞のヘテロ性を表示するとか。
201016 8

こういった複雑なヒートマップを描くことができます。包括的なチュートリアル (英語) も公開されていて、さまざまなことをちょっとしたコピペで行うことができます。

まとめに代えて

この記事ではRでヒートマップを書くための関数やパッケージを紹介しました。Rにおける可視化は特にggplotパッケージを使えば自在に行うことができます。

「Rグラフィックスクックブック ―ggplot2によるグラフ作成のレシピ集」には、膨大な数の図表とその書き方が実際のコードで紹介されていて、図表を流し読みしながら自分の欲しいイメージに近いものを表現するコードを探すことができます。

「Rをはじめよう 生命科学のためのRStudio入門」は、生命科学領域を題材としてRによる統計解析・ggplotによる可視化の方法を手取り足取り教えてくれています。

今日も【生命医学をハックする】 (@biomedicalhacks) をお読みいただきありがとうございました。当サイトの記事をもとに加筆した月2回のニュースレターも好評配信中ですので、よろしければこちらも合わせてどうぞ

人気 月間2万アクセスの当サイトから無料ニュースレターを受け取る
この記事のタイトルとURLをコピーする
生命医学の知識や進歩を無料のニュースレターで

がんをはじめとする病気やよくある症状などの医学知識、再生医療などの生命科学研究は、研究手法が大きく前進したこととコンピューターの発達なども相まって、かつてないほどの勢いで知識の整備が進んでいます。

生命医学をハックするでは、主として医師や医学生命科学研究者ではない方や、未来を担う学生さんに向けた情報発信をしています。

2週間に1回のペースで、サイトの更新情報や、それらをまとめた解説記事をニュースレターとして発行しています。メールアドレスの登録は無料で、もちろんいつでも解除することができます。

サイト名の「ハックする」には、分かってきたことを駆使し、それを応用して、病気の治療や研究などにさらに活用していこうという意味があります。

生命医学について徐々に解き明かされてきた人類の英知を受け取ってみませんか?

この記事が気に入ったら
フォローしよう

最新情報をお届けします

Twitterでも情報発信中

こちらの記事もいかがですか?
ブログランキング参加中 (クリックしていただけると励みになります)