読者です 読者をやめる 読者になる 読者になる

ggplot2でシンプルなヒートマップを描く

 今回は、ggplot2パッケージを使って、シンプルな(=デンドログラムなしの)ヒートマップを作成します。分析データは、caパッケージのauthorとします。*1
 ggplot2でヒートマップを描くには、reshape2パッケージのmelt関数を使った前処理が必要となります。

# パッケージの読み込み
library(ca)
library(reshape2)
library(ggplot2)
# データの標準化
author.scale <- scale(author)
# データ形式の変換
author.melt <- melt(author.scale)
# 変換したデータの一部を表示
head(author.melt)

 上記のスクリプトを実行すると、以下のような結果が表示されます。

                          Var1 Var2       value
1       three daughters (buck)    a -0.24995040
2          drifters (michener)    a -1.57880061
3           lost world (clark)    a  1.26873556
4             east wind (buck)    a  0.01581965
5 farewell to arms (hemingway)    a  1.23076841
6  sound and fury 7 (faulkner)    a -0.59165474

 そして、このデータを使って、ヒートマップを作成します。

# ヒートマップの作成
ggplot(author.melt, aes(Var2, Var1)) + geom_tile(aes(fill = value), colour = "white") + scale_fill_gradient(low = "white", high = "black")

 上記のスクリプトを実行すると、以下のような図が表示されます。

f:id:langstat:20150324214755p:plain

(追記)ggplot2を使わずに描く方法がこちらで紹介されています。

*1:このデータは、12編の小説における26種類のアルファベットの数を集計したものです。