好的,我相信我有你的解決方案。我將圖例位置的信息保存在一個名爲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'。 –