Добавление другой простой альтернативы, которая, по моему мнению, довольно изящна.
Ваш сюжет:
plot(1:3, rnorm(3), pch = 1, lty = 1, type = "o", ylim=c(-2,2))
lines(1:3, rnorm(3), pch = 2, lty = 2, type="o")
Легенда:
legend("bottomright", c("group A", "group B"), pch=c(1,2), lty=c(1,2),
inset=c(0,1), xpd=TRUE, horiz=TRUE, bty="n"
)
Результат:
Здесь в ваш пример добавлена только вторая строка легенды. В свою очередь:
inset=c(0,1)
- перемещает легенду по части области графика в направлениях (x, y). В этом случае легенда находится в положении "bottomright"
. Он перемещается на 0 областей изображения в направлении x (поэтому остается на «правее») и на 1 участок графика в направлении y (снизу вверх). И так получилось, что оно появляется прямо над графиком. xpd=TRUE
- давайте легенду появляться вне области построения графика. horiz=TRUE
- инструктирует создать горизонтальную легенду. bty="n"
- деталь стиля, чтобы избавиться от ограничивающей рамки легенды. То же самое применяется при добавлении легенды в сторону:
par(mar=c(5,4,2,6))
plot(1:3, rnorm(3), pch = 1, lty = 1, type = "o", ylim=c(-2,2))
lines(1:3, rnorm(3), pch = 2, lty = 2, type="o")
legend("topleft", c("group A", "group B"), pch=c(1,2), lty=c(1,2),
inset=c(1,0), xpd=TRUE, bty="n"
)
Здесь мы просто скорректировали положения легенды и добавили дополнительное пространство поля в правую сторону участка. Результат: