R 将图例放置在动态变化的绘图外

R 将图例放置在动态变化的绘图外,r,plot,R,Plot,在我下面的R代码中,我有两种情况,每种情况都会导致不同的绘图,具体取决于S比1大或小。我想知道如何取出(向上移动)当前图例,并将其放在绘图上方的同一位置,以便生成任意一个绘图? 注意:由于Y轴处于对数刻度上,我使用了10^par('usr')[4],但我需要在10^par('usr')[4](即(10^par('usr'))[4]+一个数字)中添加一个数字,以便“这个数字”将图例放置在两个结果图上方的同一位置 下面是R代码: S <- 0.25 ### !!! Change th

在我下面的R代码中,我有两种情况,每种情况都会导致不同的绘图,具体取决于
S
1
大或小。我想知道如何取出(向上移动)当前图例,并将其放在绘图上方的同一位置,以便生成任意一个绘图?

注意:由于Y轴处于对数刻度上,我使用了
10^par('usr')[4]
,但我需要在
10^par('usr')[4]
(10^par('usr'))[4]+一个数字
)中添加一个数字,以便“这个数字”将图例放置在两个结果图上方的同一位置

下面是R代码:

 S <- 0.25    ### !!!  Change this to "24" and see how another plot will appear !!! ###
Ur <- c(0.25, 24, 16)

if(S>=1){

plot(1, 1, type = "n", xlim = c(0,1.5), ylim = c(1/3, 100), log="y", bty="n", ann=F, axes=F, xaxs="i")

axis(side=1, at = seq(0,1.5,.25),labels = c("0",".25",".5",".75","1","1.25","1.5"))
axis(side=2, at = c(1/3, 1, 3, 10, 30, 100),labels = c("1/3", "1", "3", "10", "30", "100"),las=1)

}else{

plot(1, 1, type = "n", xlim = c(0,1.5), ylim = c(.01, 3), log="y", bty="n", ann=F ,axes=F, xaxs="i")

axis(side=1, at = seq(0,1.5,.25),labels = c("0",".25",".5",".75","1","1.25","1.5"))
axis(side=2, at = c(.01, 1/30, 1/10, 1/3, 1, 3),labels = c("1/100", "1/30", "1/10", "1/3", "1", "3"),las=1)
}


legend(0, (10^par("usr"))[4], bquote(paste("Selected Prior:              ",bold('PN'[10])," = ", .(round(S,3)))), ## Legend
   pch = 21,cex=2,pt.bg="green", col="red", pt.cex=2.8, bty="n")  

S您可以使用
legend
中的
inset
参数。为此,您需要使用legend location作为单词。在您的情况下,
“左上角”
。这样,您就不需要基于“y”提供特定的位置

inset参数允许您偏移图例。在本例中,y偏移-0.03

我还使用
par(xpd=TRUE)
扩展允许的绘图空间。最后,我还更改了字体大小以生成以下图表

par(xpd=TRUE)
legend("topleft", legend=bquote(paste("Selected Prior:              ",bold('PN'[10])," = ", .(round(S,3)))), ## Legend
   pch = 21,cex=1,pt.bg="green", col="red", pt.cex=2, bty="n", inset=c(0,-0.03))

我找不到G?您可以使用
par()$fig
(“框”的x、y坐标)找到当前绘图的坐标,并使用该坐标计算当前绘图的坐标legend@aelwan,我编辑了代码,运行well@Remko,
par('fig')[4]
不会将图例置于绘图区域上方。所以,我想,
10^par('usr')[4]
要好得多。但是我需要加上一个数字,这样这个数字就可以把传说放在两个情节上面完全相同的位置了?非常感谢!下面是一个简单的后续问题,
legend()
中是否有任何参数可以控制符号与符号后面显示的文本之间的距离?(在我的例子中,绿色点和单词“Selected Preor”之间的距离?)@parvinkarimi Yes。这是
x.intersp
尝试
x.intersp=0.5
以获得短距离,或
x.intersp=2
以增加距离