R 将图例放置在动态变化的绘图外
在我下面的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
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
以增加距离