2014-04-07 8 views
7

Sto tracciando un grafico come segue. Il codice che ho usato per generare la legenda èCome ridurre i margini interni della legenda box

legend(4, 20, c("Placebo", "Progabide"), lty=1:2, pch=c(1,16), col=1:2, cex=0.8) 

enter image description here

Il problema è che il margine interno (in direzione verticale) è troppo grande e voglio ridurlo. Immagino che un modo alternativo per ridurre i margini interni sia di ridurre ulteriormente il "cex". Ma poi anche il testo nella casella diventa più piccolo. C'è un modo per ridurre la scatola ma non ridurne il contenuto.

+1

Si potrebbe sopprimere la casella con l'argomento 'BTY = 'n'' e tracciare il proprio con' rect() '. – jbaums

risposta

9

Ecco un esempio su come eseguire questa operazione con rect, come menzionato @jbaums. Utilizzando le informazioni rect della legenda predefinita, è possibile assicurarsi che la posizione della casella sia corretta.

plot(x=1:10,y=1:10+rnorm(10), ylim=c(0,11)) 

# draw default box and store size of default rect in 'a' 
# disable this default rect by adding plot=F to legend() 
a=legend(x=1,y=9, c("old box", "new box"), lty=1, col=2:1, cex=0.8, y.intersp=0.8,box.col=2)#,plot=F) 

# box size reduced by factor 0.75 
a=a$rect 
mid = a$top - 0.5*a$h 
reduction = 0.75 

# draw new box 
rect(xleft=a$left, ytop=mid+0.5*reduction*a$h, xright=a$left+a$w, ybottom=mid-0.5*reduction*a$h) 
# add legend items to new box 
legend(x=1,y=9, c("old box", "new box"), lty=1, col=2:1, cex=0.8, y.intersp=0.8, bty='n') 

enter image description here

Problemi correlati