R图表中的图例

10

我想将图例分成两部分,使得前三个元素与第四个元素之间有约1行高度的间隔。我最初只是尝试在第一个元素之前添加一个换行符:

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

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

然后我使用了两个单独的图例,将边框设置为"n"并使用lines()重新构建边框(顺便问一下,有没有办法抑制图例的一个边框?);虽然这样做可以解决问题,但需要对inset的值进行大量的试错。

legend()inset的默认值为c(0,0),但这些显然会在初始调用legend()时进行调整,根据该图例元素中文本的长度进行调整。根据?legendlegend()调用的返回值包括:

"数字向量,其长度为length(legend),给出图例文本的x和y坐标。"

是否有办法将此转换为适合第二次调用的inset的合适值,以使两个图例的元素对齐?

1个回答

24

在您希望有空格的参数中指定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"))

在此输入图片描述

或者,如果您想通过两次调用legend()来更精细地控制图例,请在参数中指定trace=TRUE,它将返回您所需的x和y坐标。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接