2011-09-06 14 views
6

Sto generando numerosi grafici con i valori xlim e ylim che sto calcolando in base al grafico. Voglio mettere la mia leggenda al di fuori dell'area del grafico (appena sopra la casella attorno alla trama reale), ma non riesco a capire come ottenere il massimo valore y della scatola attorno alla mia area di trama.Ottieni valori casella di delimitazione della trama()

Esiste un metodo anche per farlo? Posso spostare la legenda dove lo voglio modificando manualmente i valori di xxe y, ma questo richiede molto tempo per la quantità di grafici che sto creando.

Grazie!

jm

+1

Provare a guardare '? Par' e il parametro' usr'. – joran

+0

Stai usando 'ggplot' per i tuoi grafici? Se ci mostri un codice di esempio e un grafico, potrebbe aiutarti a capire cosa vuoi. – Andrie

risposta

10

Ecco un esempio di base che illustra quello che penso che stai cercando utilizzando uno degli esempi di codice da ?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

Grazie! Questo è esattamente ciò di cui avevo bisogno! –

1

Gli argomenti Oma, OMD, e OMI di par() confini di controllo e margini di trame - possono essere interrogati utilizzando par()$omd (ecc). e impostare (se necessario) utilizzando par(oma=c()) (dove il vettore può avere fino a 4 valori - vedi? par)

+0

'par (" omd ")' sarebbe un modo più standard per recuperare il parametro denominato. –

3

Il comando par('usr') torneranno le coordinate del riquadro di delimitazione, ma si possono anche usare i grconvertX e grconvertY funzioni. Un semplice esempio:

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) 
Problemi correlati