2017-02-15 27 views
2

ヒートマップ自体の軸ラベルサイズを設定する方法が見つかりませんでした。 cex.lab引数がheatmap.2に渡されても効果はありません。 par(cex.lab = 2.5)を呼び出すと、凡例の軸のラベルとタイトルに影響があります(これらはすべてまとめて、タイトルのみを変更したい場合はどうしたらいいでしょうか...)。とにかく、私の質問は、ヒートマップの軸ラベルのサイズです。例コード:gplots heatmap.2で軸ラベルのサイズを設定するには?

require(gplots) 

data(mtcars) 
x <- as.matrix(mtcars) 
heatmap.2(x, ylab = 'foo bar', xlab = 'bar foo') 
par(cex.lab = 5.0) 
heatmap.2(x, ylab = 'foo bar', xlab = 'bar foo') 
+0

'cexRow'を'cexCol'引数が役に立つかもしれません。あなたは 'ヒートマップ'を調べましたか? – bouncyball

+0

'cexCol'と' cexRow'は軸ラベルではなく軸のティックラベルのサイズを設定してくれてありがとうございます。 'heatmap'で同じことを実行すると、同じことが起こります:軸のラベルは影響を受けません – deeenes

答えて

2

検査コードheatmap.2コードは設計上ではありません。 heatmap.2ヒートマップを描画するにはimageを呼び出し、それに余分なキーワードargs()が渡されるため、heatmap.2(..., cex.lab = n, ...)を呼び出すとはparとなりますので、それも可能です。しかし、ここでxlabylabは、空の文字列に置き換えられ、そしてticklabelsと軸ラベルの両方が、後にプロットされています

# from gplots heatmap.2 source: 
image(1:nc, 1:nr, x, xlim = 0.5+ c(0, nc), ylim = 0.5+ c(0, nr), 
    axes = FALSE, xlab = '', ylab = '', col=col, breaks=breaks, 
    ...) 

その後parパラメータに敏感ではない、それはmtextを使用して軸ラベルを描画するが、受け入れここで提供されていないcex引数:

# from gplots heatmap.2 source: 
if(!is.null(xlab)) mtext(xlab, side = 1, line = margins[1] - 1.25) 
if(!is.null(ylab)) mtext(ylab, side = 4, line = margins[2] - 1.25) 

これは、ヒートマップは、時には巨大である一方で、これらのラベルは、常に同じ大きさであることを意味するので、これは問題になるかもしれません。また、グラフィックデバイスと、カスタマイズのオプションを持つ他のすべてのテキストエレメントを縮小して、軸ラベルの相対サイズを大きくすることもできます。しかし、これをより柔軟な方法でどのように並べ替えることができましたか?ユーザーが変更できるように

# gplots heatmap.2 code modified: 
## add row and column headings (xlab, ylab) 
cex.lab <- ifelse(invalid(match.call()$cex.lab), 1.0, match.call()$cex.lab) 
if(!is.null(xlab)) mtext(xlab, side = 1, 
         line = margins[1] - 1.25 + cex.lab/5, 
         cex = cex.lab) 
if(!is.null(ylab)) mtext(ylab, side = 4, 
         line = margins[2] - 1.25 + cex.lab/5, 
         cex = cex.lab) 

唯一の問題は今cex.lab/5された位置決めパラメータであり、これは合理的な範囲でticklabelsと重複するが、他のパラメータをmaye回避し、機能を追加する必要があります。私はこのようなコードを修正しましたそれが合わない場合。

あなたは、あなたの作業ディレクトリにgplotssourceからheatmap.2.Rをコピーして、ソースを変更することができ、それ:

あなたが先頭にも、これらの行を追加する必要が
source('heatmap.2.R') 

require(gtools) 
plot.dendrogram = stats:::plot.dendrogram 
関連する問題