6

数百行と数十列のマトリックスがあり、ヒートマップをプロットしたいと考えています。ネイティブの R 関数を使用する場合:

heatmap(matrix(sample(1:10000),nrow=1000,ncol=10))

行タイトルが判読できない図が表示されます。現在の作図装置の仕様に合わせて作図されていると思います。現在のデバイスでは表示できない場合でも、行の高さを制御したいと考えています。縦長の PNG に書き込むだけで、画像の上/下に空白が追加されます。

png( '/looks_the_same_with_whitespace.png', width=500, height=1500)
heatmap(matrix(sample(1:10000),nrow=1000,ncol=10))
dev.off()

おそらくRをだまして、私が非常に背の高いモニターを持っていると思わせることによって、これを行うためのきれいな方法はありますか? 十分にサポートされているライブラリの関数も良い答えです。

4

1 に答える 1

8

少し前に、私も同じ問題に直面しました。heatmap.2パッケージの関数gplotsが問題を解決しました。しかし、非常に多くの遺伝子 (またはローラボ) を調べることがどのように有益であるかはよくわかりません。しかし、あなたが尋ねたように、あなたはこのようなことをするでしょう:キーはlayout、プロットデバイスの2x2グリッドにヒートマップを描画するヒートマップの(?heatmap.2、?layoutを参照)を変更することです(?layoutの例はこれをよりよく説明しています)。その後、それに応じて変更してcexオブrowlabsを変更することをお勧めしますcexRow。状況によっては、目的の結果を得るために値をいじる必要がある場合があります。

library(gplots)

row.scaled.expr <- matrix(sample(1:10000),nrow=1000,ncol=10)

png( 'heatmap_without_whitespace_smaller_row_lab.png', width=500, height=1500)
heatmap.2(row.scaled.expr, dendrogram ='row',
                 Colv=FALSE, col=greenred(800), 
                 key=FALSE, keysize=1.0, symkey=FALSE, density.info='none',
                 trace='none', colsep=1:10,
                 sepcolor='white', sepwidth=0.05,
                 scale="none",cexRow=0.2,cexCol=2,
                 labCol = colnames(row.scaled.expr),                 
                 hclustfun=function(c){hclust(c, method='mcquitty')},
                 lmat=rbind( c(0, 3), c(2,1), c(0,4) ), lhei=c(0.25, 4, 0.25 ),                 
                 )
dev.off()
于 2011-02-14T06:34:36.140 に答える