R图中的传奇
我想将绘图上的图例拆分为2个,这样前3个元素与第4个元素之间的间距约为1行高。我最初只是尝试在第一个元素之前添加换行符:R图中的传奇,r,plot,legend,R,Plot,Legend,我想将绘图上的图例拆分为2个,这样前3个元素与第4个元素之间的间距约为1行高。我最初只是尝试在第一个元素之前添加换行符: legend("topright",col=1,lty=1:3,lwd=1,legend=c("leg1","leg2","\nleg3"), bty="n") 但这似乎增加了所有元素之间的差距(这是有记录的行为吗?) 然后,我使用了两个单独的图例,将边框设置为“n”,并使用行()重建边框(顺便问一下,是否有办法仅抑制图例的一个边框?);虽然这是可行的,但它确实需要对ins
legend("topright",col=1,lty=1:3,lwd=1,legend=c("leg1","leg2","\nleg3"), bty="n")
但这似乎增加了所有元素之间的差距(这是有记录的行为吗?)
然后,我使用了两个单独的图例,将边框设置为“n”
,并使用行()
重建边框(顺便问一下,是否有办法仅抑制图例的一个边框?);虽然这是可行的,但它确实需要对inset
的值进行大量的尝试和错误处理
legend()
中的inset
的默认值是c(0,0)
,但是这些值在最初调用legend()
时会根据该图例元素中的文本长度进行调整。根据?legend
,调用legend()
的值包括
长度(图例)的数字向量,给出图例文本的x和y坐标
是否可以将其转换为第二次调用的
插入部分的合适值,以便两个图例的元素对齐 只需在参数中指定要在其中放置空间的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坐标