R でヒートマップを作成することは、多くの投稿、議論、反復のトピックでした。私の主な問題は、latticelevelplot()
または basic graphicsで利用可能なソリューションの視覚的な柔軟性と、basic 、pheatmap、または gplotsimage()
の簡単なクラスタリングを組み合わせるのが難しいことです。変更したいのは小さな詳細です-x軸のラベルの対角方向。コードのポイントをお見せしましょう。heatmap()
pheatmap()
heatmap.2()
#example data
d <- matrix(rnorm(25), 5, 5)
colnames(d) = paste("bip", 1:5, sep = "")
rownames(d) = paste("blob", 1:5, sep = "")
次を使用して、向きを斜めに簡単に変更できますlevelplot()
。
require(lattice)
levelplot(d, scale=list(x=list(rot=45)))
しかし、クラスタリングを適用するのは苦痛に思えます。ヒートマップ セルの周囲に境界線を追加するなど、他の視覚的オプションも同様です。
heatmap()
現在、実際の関連機能、クラスタリング、およびすべての基本的なビジュアルに移行するのは非常に簡単です。調整はほとんど必要ありません。
heatmap(d)
そしてここにあります:
require(gplots)
heatmap.2(d, key=F)
そして最後に、私のお気に入りのもの:
require(pheatmap)
pheatmap(d)
しかし、それらのすべてには、ラベルを回転させるオプションがありません。Manual forは、ラベルの向きをカスタマイズするためにpheatmap
使用できることを示唆しています。grid.text
特に表示されるラベルのクラスタリングと順序の変更は、なんと楽しいことでしょう。ここで何かが欠けていない限り...
最後に、古き良きものがありimage()
ます。ラベルを回転させることができます。一般に、これは最もカスタマイズ可能なソリューションですが、クラスタリング オプションはありません。
image(1:nrow(d),1:ncol(d), d, axes=F, ylab="", xlab="")
text(1:ncol(d), 0, srt = 45, labels = rownames(d), xpd = TRUE)
axis(1, label=F)
axis(2, 1:nrow(d), colnames(d), las=1)
では、クラスタリングとオリエンテーション、および優れた視覚的機能のハッキングを使用して、理想的で迅速なヒートマップを取得するにはどうすればよいでしょうか? これらの 2 つは調整において最も用途が広いように思われるため、私の最良の入札額は変更heatmap()
または何らかの形です。pheatmap()
しかし、どんな解決策も歓迎します。