2012-05-15 67 views
4

我有以下的傳說:在現有傳說的底部放置其他傳說中的R

enter image description here

我怎樣才能找到與「平均值及標準差」中的文本,以便 它可以準確地放置在「--- emp」下。

該生成的代碼是這樣的:

L = list(bquote(Em.Mean ==.(new_avg)), 
    bquote(Em.SD==.(new_std)), bquote(Th.Mean ==.(theor_avg)), 
    bquote(Th.SD==.(theor_sd))) 

legend("topright", c(kids,"emp."), cex=0.7, bty="n", col=c(cm.colors(6), "red"), 
    pch=c(rep(19, 6), -5), lty = c(0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0),) 

# How can I locate this  
legend("topcenter", cex=0.5, bty="n", legend=sapply(L, as.expression)) 
+2

當您發佈的代碼,建議您清潔它,你可以將其刪除所以它更具可讀性,而不是試圖用分號和空格混合所有東西。此外,提供可重複的示例使您更有可能獲得您之後的回覆。 –

+0

要回答你的問題,你可能想用'locator()'來確定第二個圖例的座標。請注意,'legend'需要座標參數來放置。 'legend'' –

+3

'legend'無形地返回一個帶有包含寬度('w'),高度('h'),左('left')和頂部('top')組件的'rect'組件的列表 - - 您可以使用這些來計算圖例框底部中心的位置。 (這在'?legend'的'Value'部分有描述) –

回答

2

legend座標可以分配給一個對象。這些座標可以用來放置第二個圖例。例如,

x <-10:1 
y <-11:20 
plot(x,y,type="h") 
my.legend.size <- legend("topright",c("Series1","Series2","Series3")) 
> my.legend.size 
$rect 
$rect$w 
[1] 1.599609 

$rect$h 
[1] 1.506977 

$rect$left 
[1] 8.760391 

$rect$top 
[1] 20.36 


$text 
$text$x 
[1] 9.266641 9.266641 9.266641 

$text$y 
[1] 19.98326 19.60651 19.22977 

使用$ RECT $左右,$ RECT $頂部,$ RECT $ h時,您可以爲第二個傳說提供了新的座標。

#second legend 
legend(x=my.legend.size$rect$left,y=my.legend.size$rect$top-  
my.legend.size$rect$h,c("Series4","Series5","Series6")) 

enter image description here

我注意到,你的第二個傳說的寬度比第一次更大。這裏的技巧是獲取第二個圖例的座標,但不使用,plot = FALSE打印它第二個圖例的x座標是my.legend.size2$rect$left

x <-10:1 
y <-11:20 
plot(x,y,type="h") 
my.legend.size <-legend("topright",c("Series1","Series2","Series3")) 
my.legend.size2 <-legend("right",c("Long series name","Series5","Series6"),plot = FALSE) 
legend(x=my.legend.size2$rect$left,y=my.legend.size$rect$top- 
my.legend.size$rect$h,c("Long series name","Series5","Series6")) 

enter image description here

PS:我已經離開了箱子周圍的傳說表明,位置是完美的,但使用bty = "n"