我想将绘图上的图例分成2,以便前3个元素与第4个元素分开约1行高的间隙。我最初只是尝试在第一个元素之前添加换行符:
legend("topright",col=1,lty=1:3,lwd=1,legend=c("leg1","leg2","\nleg3"), bty="n")
但这似乎会增加所有元素之间的差距(这是记录在案的行为吗?)
然后我使用了两个单独的图例,将边框设置为"n"
并使用lines()
重建边框(顺便说一下,有没有办法只能抑制图例的1个边框?);虽然这有效,但确实需要对inset
的值进行大量的反复试验。
inset
中legend()
的默认值为c(0,0)
,但这些显然会在legend()
的初始调用中根据文本的长度进行调整那个传奇的元素。根据{{1}},?legend
调用的值包括
“长度为数字的向量(图例),给出图例文本的x和y坐标。”
无论如何,这可以转换为第二个调用的legend()
的合适值,以便两个传说的元素排成一行吗?
答案 0 :(得分:22)
只需在您想要空间的参数中指定NA。您需要将所有图例参数作为向量。
set.seed(2)
plot(0:10, rnorm(11), col = sample(c("green", "blue"), 11, replace = TRUE),
pch = sample(c(3, 19), 11, replace = TRUE), xlim = c(0, 12))
legend("topright", pch = c(3, 19, NA, 3, 19),
col = c("green", "green", NA, "blue", "blue"),
legend = c("green cross", "green dot", NA, "blue cross", "blue dot"))
或者,如果要对legend()
进行2次调用以获得更好的控制,请在参数中指定trace=TRUE
,然后返回所需的x和y坐标。