@backlinによる紹介
layout
またはを使用して、複数の単純なプロットを 1 つの図のパネルとして組み合わせることができますpar(mfrow=...)
。ただし、より複雑なプロットは、独自のパネル レイアウトを内部的にセットアップして、パネルとして使用できないようにする傾向があります。ネストされたレイアウトを作成し、複雑なプロットを単一のパネルにカプセル化する方法はありますか?
grid
たとえば、パネルを別々のビューポートにプロットすることで、パッケージがこれを達成できると感じていますが、その方法を理解できていません。問題を示すおもちゃの例を次に示します。
my.plot <- function(){
a <- matrix(rnorm(100), 10, 10)
plot.new()
par(mfrow=c(2,2))
plot(1:10, runif(10))
plot(hclust(dist(a)))
barplot(apply(a, 2, mean))
image(a)
}
layout(matrix(1:4, 2, 2))
for(i in 1:4) my.plot()
# How to avoid reseting the outer layout when calling `my.plot`?
@alittleboy による元の質問
heatmap.2
パッケージの関数を使用してgplots
ヒートマップを生成します。単一のヒートマップのサンプル コードを次に示します。
library(gplots)
row.scaled.expr <- matrix(sample(1:10000),nrow=1000,ncol=10)
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 ),
)
ただし、1 つのプロットで複数のヒートマップを比較したいので、使用してから4 回par(mfrow=c(2,2))
呼び出します。heatmap.2
row.scaled.expr <- matrix(sample(1:10000),nrow=1000,ncol=10)
arr <- array(data=row.scaled.expr, dim=c(dim(row.scaled.expr),4))
par(mfrow=c(2,2))
for (i in 1:4)
heatmap.2(arr[ , ,i], 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(arr[ , ,i]),
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 ),
)
ただし、結果は 1 つのプロットに 4 つのヒートマップではなく、4 つの個別のヒートマップになります。つまり、pdf()
結果を出力するために使用すると、ファイルは 1 ページではなく 4 ページになります。どこかでパラメータを変更する必要がありますか? どうもありがとう!