好的,我相信我有你的解决方案。我将图例位置的信息保存在一个名为ld
的对象中,然后根据这些坐标创建一个polygon
。理解起来有点棘手,但我基本上将多边形扩展了几个长度。为了做到这一点,我必须首先用par()$cin
获取字符尺寸,并将这些尺寸转换为这些尺寸(除以72并乘以par()$ps
。然后,通过缩放par()$usr
将其转换为图的单位以获得字符宽度的单位(我认为这是正确的 - 在任何情况下,它的工作原理!)我在ld
坐标的左边添加了3个这样的单位,右边2,上边1和下边1,结果和代码如下:
plot(1)
legendLabel<-c("t\nu ","tu","wh","trr\nni")
ld <- legend("top",legend=legendLabel,horiz=TRUE,fill=c("red","blue","gray","black"), bty="n")
CIN <- par()$cin
PS <- par()$ps
USR <- par()$usr
CIN.USR <- c((CIN[1]/72*PS)/(USR[2]-USR[1]), (CIN[2]/72*PS)/(USR[4]-USR[3]))
xs <- c(ld$text$x[1], ld$text$x[1], ld$text$x[length(ld$text$x)], ld$text$x[length(ld$text$x)])
ys <- c(ld$text$y[1], ld$text$y[1], ld$text$y[length(ld$text$x)], ld$text$y[length(ld$text$x)])
polygon(
x = xs + c(-3*CIN.USR[1], -3*CIN.USR[1], 2*CIN.USR[1], 2*CIN.USR[1]),
y = ys+c(-1*CIN.USR[2], 1*CIN.USR[2], 1*CIN.USR[2], -1*CIN.USR[2])
)
我也放弃了。你可能想要用'bty =“n”'去掉这个盒子,然后加一个'polygon'。 –