R で、好みの色のグラデーションでヒートマップが描きたい。

heatmap または、heatmap2 関数内で、
col = colorRampPalette(c("blue3", "white", "red3"))
などとすればよろしいようです。"blue3" などを好きな色に変えるもよろしいでしょう。

この方法だと、中間部分の色指定が可能です。下記は4色での指定の例です。データのファイル名は、わざと 「ホゲ」 と記載しています。

library(gplots)
Colour <- colorRampPalette( c("black","mediumpurple4","pink2","peachpuff", "white") )
heatmap.2(as.matrix(ホゲ),
dendrogram = "none",
Colv=F,
Rowv=FALSE,
scale="none",
key = F,
density.info="none",
col=Colour, main="Cosine-Average", margin=c(8,10),
trace = "none"
)
などとされたら、黒 - 深紫 - 桃色 - 肌色 - 白 というようなグラデーションで、データ 「ホゲ」 のヒートマップが描けるでしょう。
ここで、"key = F" としているのは、"key" が、相当に重い描画をするからです。"key" を表示させたい場合は、"key = F" とするのも良いでしょう。

もし、重くなるのを、さけたい時は、別に key を作ってしまいましょう。

plot(NULL, xlim=c(0,32), ylim=c(0,1), axes=FALSE, xlab="", ylab="")
rect(0:31, 0, 1:32, 1, col=Colour(32), border=NA)
としたら、32段階で、先程、指定したグラデーションを表示してくれます。
これを PDF で保存して、後から貼る方が、扱いやすいこともあるでしょう。

4色の色見本のみを、表示したい時は、下記です。"rect" の後だけ、1 少なくするので気をつけましょう。

plot(NULL, xlim=c(0,4), ylim=c(0,1), axes=FALSE, xlab="", ylab="")
rect(0:3, 0, 1:4, 1, col=Colour(4), border=NA)

colorRampPalette は、とても便利で、

Colour <- colorRampPalette(c("#FFEEEE","#F0AFB0","#CC6699","#884477","black"))

のように、RGP と色の名前を混ぜて書いても受けつけてくれます。

おまけで、青白系の例を置きます。

Colour<- colorRampPalette( c("black","midnightblue","dodgerblue2","skyblue", "white") )

自由度は高いのですが、故に、時間がかかる可能性は覚悟が必要です。

別法として、RColorBrewer におけるところの RdBu 等を使うも良いでしょう。
ところが、この RdBu は、赤が低い値に使われます。
これを、ひっくり返すため tagcloud パッケージを使いましょう。

library(RColorBrewer) library("tagcloud")
で、パッケージをロードして、heatmap または、heatmap2 関数内で、
col = smoothPalette(c(255:0), pal="RdBu")
とすればよろしい。

Rで、サンプルデータ作製からヒートマップ表示とクラスタリング表示 (Afiinity propagation含む) まで 」 で、乱数によるサンプルデータを作って、並べ換えなしでヒートマップを書くところから、クラスタリングを行ってヒートマップを書くところまで記載しました。

B! LINE