Łączenie wielu złożonych wykresów jako paneli na jednym rysunku
Wiele prostych wykresów można łączyć jako panele w jedną figurę, używająclayout
lubpar(mfrow=...)
. Jednak bardziej złożone wykresy mają tendencję do ustawiania własnego układu paneli wewnętrznie, uniemożliwiając ich użycie jako paneli. Czy istnieje sposób na utworzenie zagnieżdżonego układu i zamknięcie złożonego wykresu w jednym panelu?
Mam przeczuciegrid
pakiet może to osiągnąć, np. kreśląc panele w oddzielnych rzutniach, ale nie udało nam się dowiedzieć, jak to zrobić. Oto przykład zabawki, aby zademonstrować problem:
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`?
Oryginalne pytanie @alittleboyużywamheatmap.2
funkcja wgplots
pakiet do generowania map ciepła. Oto przykładowy kod pojedynczej mapy ciepła:
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 ),
)
Ponieważ jednak chcę porównać wiele map ciepła w jednym wykresie, używampar(mfrow=c(2,2))
a następnie zadzwońheatmap.2
cztery razy, tj.
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 ),
)
Jednak wynik NIE jest czterema mapami ciepła na jednym wykresie, ale czterema oddzielnymi mapami ciepła. Innymi słowy, jeśli używampdf()
aby uzyskać wynik, plik ma cztery strony zamiast jednej. Czy muszę gdzieś zmienić jakieś parametry? Dziękuję bardzo!