2011-09-06 10 views
6

Estoy generando numerosos trazados con los valores xlim y ylim que estoy calculando por cada trama. Quiero poner mi leyenda fuera del área de la trama (justo encima del cuadro alrededor de la trama real), pero no puedo encontrar la forma de obtener el valor y máximo de la caja alrededor de mi área de trazado.Obtención de los valores del cuadro delimitador de trama()

¿Hay algún método para hacer esto? Puedo mover la leyenda a donde quiero cambiando manualmente los valores legend() xey, pero esto lleva mucho tiempo para la cantidad de gráficos que estoy creando.

Gracias!

-JM

+1

Intenta mirar '? Par' y el parámetro' usr'. – joran

+0

¿Estás usando 'ggplot' para tus tramas? Si nos muestra un código de ejemplo y un gráfico, puede ayudarnos a entender lo que quiere. – Andrie

Respuesta

10

Aquí hay un ejemplo básico que ilustra lo que creo que está buscando usando uno de los ejemplos de código de ?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

+0

Gracias! ¡Eso es exactamente lo que necesitaba! –

1

Los argumentos oma, OMD, y omi de par() límites de control y los márgenes de las parcelas - que pueden consultar utilizando par()$omd (etc). y establecer (si es necesario) usando par(oma=c()) (donde el vector puede tener hasta 4 valores - vea? par)

+0

'par (" omd ")' sería una forma más estándar de recuperar el parámetro nombrado. –

3

El comando par('usr') volverán las coordenadas del rectángulo de selección, pero también se puede utilizar los grconvertX y grconvertY funciones. Un ejemplo simple:

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) 
Cuestiones relacionadas