2012-03-02 85 views
8

我想将图上的图例分解为2,以便前3个元素与第4个元素间隔大约1行高度。我最初只是尝试了第一个元素之前添加一个换行符:R图中的传说

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

但这似乎增加其间的差距都元素(这是记录的行为?)

然后我用了2分开的传说,设置边界到"n"和使用lines()来重建边界(顺便说一下,有没有办法仅仅抑制图例的一个边界?);虽然这可行,但它确实需要大量的试验和错误,其值为inset

insetlegend()的默认值是c(0,0),但这些显然给legend()初始呼叫得到调整的基础上,在传说中的元素文本的长度。根据?legendlegend()呼叫的值包括

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

无论如何,这可以转换为第二个电话的inset的合适值,以便两个传说的元素排队?

回答

22

只需在需要空间的参数中指定NAs即可。您需要将所有图例参数作为矢量。

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

另外,如果你想为更好的控制2调用legend(),在参数中指定trace=TRUE并返回你的x和y坐标需要。

+0

谢谢,比我做得更容易! – ChrisW 2012-03-02 15:50:18