2011-09-06 6 views
6

プロットごとに計算しているxlimylimの値を持つたくさんのプロットが生成されています。私は伝説をプロット領域の外に(実際のプロットの周りのボックスの真上に)置いておきたいのですが、プロット領域の周りのボックスのy値を最大にする方法を見つけることができません。plot()バウンディングボックスの値を取得

これを行う方法はありますか? legend() xとyの値を手動で変更して伝説を動かすことができますが、これは作成するグラフの量に時間がかかります。

ありがとうございます!

-JM

+1

'?par'と' usr'パラメータを調べてみてください。 – joran

+0

あなたのプロットに 'ggplot'を使っていますか?いくつかのサンプルコードとグラフィックを表示すると、あなたが望むものを理解するのに役立つかもしれません。 – Andrie

答えて

10

ここには、?legendのコード例のいずれかを使用して探していると思われるものの基本的な例があります。

#Construct some data and start the plot 
x <- 0:64/64 
y <- sin(3*pi*x) 
plot(x, y, type="l", col="blue") 
points(x, y, pch=21, bg="white") 

#Grab the plotting region dimensions 
rng <- par("usr") 

#Call your legend with plot = FALSE to get its dimensions 
lg <- legend(rng[1],rng[2], "sin(c x)", pch=21, 
      pt.bg="white", lty=1, col = "blue",plot = FALSE) 

#Once you have the dimensions in lg, use them to adjust 
# the legend position 
#Note the use of xpd = NA to allow plotting outside plotting region    
legend(rng[1],rng[4] + lg$rect$h, "sin(c x)", pch=21, 
      pt.bg="white", lty=1, col = "blue",plot = TRUE, xpd = NA) 

enter image description here

+0

ありがとう!それがまさに私が必要なものです! –

1

OMA、OMD、およびプロットのpar()制御境界と余白の近江引数 - 彼らはpar()$omd(など)を使用して照会することができます。 par(oma=c())を使用して設定します(ここでベクトルには最大4つの値を設定できます)?

+0

'par(" omd ")'は、より標準的な名前付きパラメータの取得方法です。 –

3

コマンドpar('usr')は、バウンディングボックスの座標を返しますが、あなたはまた、grconvertXgrconvertY機能を使用することができます。簡単な例:

plot(1:10) 
par(xpd=NA) 
legend(par('usr')[1], par('usr')[4], yjust=0, legend='anything', pch=1) 
legend(grconvertX(1, from='npc'), grconvertY(1, from='npc'), yjust=0, 
xjust=1, legend='something', lty=1) 
関連する問題