2011-09-06 11 views
6

Generuję wiele działek z wartościami xlim i ylim, które obliczam dla poszczególnych działek. Chcę umieścić moją legendę poza obszarem fabuły (tuż nad polem dookoła rzeczywistej fabuły), ale nie mogę wymyślić, jak uzyskać maksymalną wartość Y skrzynki wokół obszaru wydruku.Uzyskaj wartości działki() ograniczające wartość

Czy istnieje metoda na zrobienie tego? Mogę przenieść legendę tam, gdzie chcę, ręcznie zmieniając wartości xiy y legend(), ale zajmuje to LONG czas na ilość wykresów, które tworzę.

Dzięki!

-JM

+1

Spróbuj spojrzeć na parametr '? Par' i parametr' usr'. – joran

+0

Używasz 'ggplot' dla swoich fabuł? Jeśli pokażesz nam przykładowy kod i grafikę, pomoże ci to zrozumieć, czego chcesz. – Andrie

Odpowiedz

10

Oto podstawowy przykład ilustrujący, czego szukam, używając jednego z przykładów kodu z ?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

Dzięki! Dokładnie tego potrzebowałem! –

1

OMA, OMD, i IMO argumenty par() granic kontrolnych i marże działek - mogą być sprawdzony za pomocą par()$omd (ETC). i ustaw (jeśli to konieczne) przy użyciu par(oma=c()) (gdzie wektor może mieć do 4 wartości - patrz? par)

+0

'par (" omd ")' byłoby bardziej standardowym sposobem pobrania nazwanego parametru. –

3

Komenda par('usr') powróci współrzędne obwiedni, ale można również użyć funkcji grconvertX i grconvertY. Prosty przykład:

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)