2011-09-28 17 views
7

私は4x4グリッドで配置されたページに16のプロットを持っています。私は2x2の各セットの周りに境界線を持っていたいと思いますが、それを行う方法を考えることはできません。プロットグループの周りの境界線

最初はlayout(matrix(c(1,2,5,6,3,4,7,8,9,10,13,14,11,12,15,16), 4, 4, byrow=TRUE))を使って正しいレイアウトを作成しましたが、わかっている限り、現在のプロットとそれに続く余白が重なるプロットの両方を超える余白を作成する方法はありません。

私が試した2番目のアプローチはsplit.screen()を使用し、oma()の設定は現在の画面にのみ適用されると考えていましたが、ウィンドウ全体に適用されるようです。例えば、次のコードは、全体表示領域の外側の、ないscreen(1)で境界を生成する:

depths <- c(1:10) 
split.screen(c(2,2)) 
screen(1) 
par(oma=c(1,1,1,1)) 
plot(depths) 
box("inner", lty="dotted", col="green") 

oma設定を設定した後box("inner")又はbox("outer")いずれかと様々なものをしようとすると、所望の結果を作成しません。

私が試しておくべき他の明白なアプローチはありますか?

おかげで、
クリス

答えて

5

は、レイアウトを使用した方法です。

layout(matrix(c(1,2,5,6,3,4,7,8,9,10,13,14,11,12,15,16), 4, 4, byrow=TRUE)) 
replicate(16, hist(rnorm(100))) 
par(xpd=NA) 
rect(grconvertX(0.005, from='ndc'), grconvertY(0.505, from='ndc'), 
    grconvertX(0.495, from='ndc'), grconvertY(0.995, from='ndc')) 
rect(grconvertX(0.005, from='ndc'), grconvertY(0.005, from='ndc'), 
    grconvertX(0.495, from='ndc'), grconvertY(0.495, from='ndc')) 
rect(grconvertX(0.505, from='ndc'), grconvertY(0.505, from='ndc'), 
    grconvertX(0.995, from='ndc'), grconvertY(0.995, from='ndc')) 
rect(grconvertX(0.505, from='ndc'), grconvertY(0.005, from='ndc'), 
    grconvertX(0.995, from='ndc'), grconvertY(0.495, from='ndc')) 

は、あなたの好みにそれを調整してください。

+0

非常に良い。そして、私がコンバージョンを浪費していた時代を考えると、いつも 'grconvertX'がそこにいました。いつか私は座って基本的な機能のリストを読まなければなりません。 – Aaron

6

box("figure")を使用してみてください:ここで

depths <- c(1:10) 
split.screen(c(2,2)) 
screen(1) 
box("figure") 
split.screen(c(2,2)) 
par(cex=0.5) 
screen(5) 
plot(depths) 
関連する問題