R图中的传说

时间:2012-03-02 13:56:48

标签: r plot legend

我想将绘图上的图例分成2,以便前3个元素与第4个元素分开约1行高的间隙。我最初只是尝试在第一个元素之前添加换行符:

legend("topright",col=1,lty=1:3,lwd=1,legend=c("leg1","leg2","\nleg3"), bty="n")

但这似乎会增加所有元素之间的差距(这是记录在案的行为吗?)

然后我使用了两个单独的图例,将边框设置为"n"并使用lines()重建边框(顺便说一下,有没有办法只能抑制图例的1个边框?);虽然这有效,但确实需要对inset的值进行大量的反复试验。

insetlegend()的默认值为c(0,0),但这些显然会在legend()的初始调用中根据文本的长度进行调整那个传奇的元素。根据{{​​1}},?legend调用的值包括

“长度为数字的向量(图例),给出图例文本的x和y坐标。”

无论如何,这可以转换为第二个调用的legend()的合适值,以便两个传说的元素排成一行吗?

1 个答案:

答案 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"))

enter image description here

或者,如果要对legend()进行2次调用以获得更好的控制,请在参数中指定trace=TRUE,然后返回所需的x和y坐标。