Получить значения plot () ограничивающего прямоугольника - PullRequest
8 голосов
/ 06 сентября 2011

Я генерирую множество графиков со значениями xlim и ylim, которые я рассчитываю для каждого участка.Я хочу разместить свою легенду за пределами области графика (чуть выше прямоугольника вокруг фактического графика), но я не могу понять, как получить максимальное значение y для прямоугольника вокруг области моего графика.

Есть ли способ даже сделать это?Я могу переместить легенду в нужное место, изменив значения legend() x и y вручную, но это занимает ДЛИННОЕ время для количества создаваемых графиков.

Спасибо!

-JM

Ответы [ 3 ]

13 голосов
/ 06 сентября 2011

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

#Construct some data and start the plot
x <- 0:64/64
y <- sin(3*pi*x)
plot(x, y, type="l", col="blue")
points(x, y, pch=21, bg="white")

#Grab the plotting region dimensions
rng <- par("usr")

#Call your legend with plot = FALSE to get its dimensions
lg <- legend(rng[1],rng[2], "sin(c x)", pch=21, 
            pt.bg="white", lty=1, col = "blue",plot = FALSE)

#Once you have the dimensions in lg, use them to adjust
# the legend position
#Note the use of xpd = NA to allow plotting outside plotting region             
legend(rng[1],rng[4] + lg$rect$h, "sin(c x)", pch=21, 
            pt.bg="white", lty=1, col = "blue",plot = TRUE, xpd = NA)

enter image description here

3 голосов
/ 06 сентября 2011

Команда par('usr') вернет координаты ограничительной рамки, но вы также можете использовать функции grconvertX и grconvertY.Простой пример:

plot(1:10)
par(xpd=NA)
legend(par('usr')[1], par('usr')[4], yjust=0, legend='anything', pch=1)
legend( grconvertX(1, from='npc'), grconvertY(1, from='npc'), yjust=0,
 xjust=1, legend='something', lty=1)
1 голос
/ 06 сентября 2011

Аргументы oma, omd и omi par() управляют границами и полями графиков - их можно запрашивать с помощью par()$omd (и т. Д.). и установите (при необходимости), используя par(oma=c()) (где вектор может иметь до 4 значений - см.? par)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...