Создать пользовательский элемент ввода

Добавление другой простой альтернативы, которая, по моему мнению, довольно изящна.

Ваш сюжет:

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"
       )

Здесь мы просто скорректировали положения легенды и добавили дополнительное пространство поля в правую сторону участка. Результат:

10
задан Kévin Bibollet 7 May 2019 в 09:05
поделиться