Легенды в R сюжетах
Я хочу разделить легенду на участке на 2, так что первые 3 элемента отделены от 4-го элемента зазором около 1 высоты строки. Сначала я просто попытался добавить разрыв строки перед 1-м элементом:
legend("topright",col=1,lty=1:3,lwd=1,legend=c("leg1","leg2","nleg3"), bty="n")
но это, кажется, увеличивает разрыв между все элементы (это документированное поведение?)
затем я использовал 2 отдельных легенды, установив границы "n"
и с помощью lines()
восстановить границы (кстати, есть ли способ подавить только 1 границу легенды?); хотя это работает, это требует много проб и ошибок со значениями inset
.
значения по умолчанию inset
на legend()
are c(0,0)
, но они, очевидно, настраиваются при первоначальном вызове legend()
, основываясь на длине текста в элементах этой легенды. Согласно ?legend
, стоимостью legend()
вызов включает в себя
"числовые векторы длины длина (легенда), предоставление координат x и y текста(ов) легенды."
есть ли в любом случае это может быть преобразовано в подходящие значения для inset
2-го вызова, чтобы элементы обеих легенд выстроились в линию?
1 ответов
просто укажите 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"))
кроме того, если вы хотите сделать 2 звонка legend()
для более тонкого управления укажите trace=TRUE
в Аргументах, и он возвращает вам координаты x и y, которые вам нужны.