Я делаю сюжет R и хочу расположить несколько легенд рядом друг с другом (за пределами области черчения).Цель - автоматизировать размещение легенды.
Я использую подход отсюда: https://stackoverflow.com/a/34624632/4978977
Вот пример кода с двумя легендами справа от графика:
dev.off()
par(mar=c(par('mar')[1:3], 0))
plot.new()
l1 <- legend(0, 0, bty='n', c("group A", "group B"), plot=FALSE, pch=c(1, 2), lty=c(1, 2))
l2 <- legend(0, 0, bty='n', c("group A", "group B"), plot=FALSE, pch=c(1, 2), lty=c(1, 2))
w1 <- grconvertX(l1$rect$w, to='ndc') - grconvertX(0, to='ndc')
w2 <- grconvertX(l2$rect$w, to='ndc') - grconvertX(0, to='ndc')
par(omd=c(0, 1-sum(w1, w2), 0, 1))
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(par('usr')[2], par('usr')[4], bty='n', xpd=NA, c("group A", "group B"), pch=c(1, 2), lty=c(1, 2))
legend(par('usr')[2]+l1$rect$w, par('usr')[4], bty='n', xpd=NA, c("group A", "group B"), pch=c(1, 2), lty=c(1, 2))
Я могу визуально получить нужное количество поля справа от графика, чтобы получить достаточно места для обеих легенд рядом друг с другом.
Как я понимаю l1$rect$w
- ширина первой легендыв «пользовательских» координатах.Как вы видите в коде - я добавляю это значение в левую позицию первой легенды, чтобы получить вторую позицию легенды.В результате вторая легенда смещается вправо, но недостаточно далеко, и перекрывается с текстом первой легенды.
Как правильно указать положение второй легенды, чтобы она не перекрывалась с первой легендой?