2014-04-07 8 views
7

Plamuję wykres w następujący sposób. Kod I używany do generowania legendy jestJak zmniejszyć wewnętrzne marginesy w polu z legendą

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

enter image description here

Problem polega na tym, że wewnętrzny margines (w kierunku pionowym) jest zbyt duży i chcę je zmniejszyć. Sądzę, że alternatywnym sposobem zmniejszenia marginesów wewnętrznych jest dalsze zmniejszenie "cex". Ale tekst w pudełku również staje się mniejszy. Czy istnieje sposób, aby zmniejszyć pole, ale nie zmniejszyć jego zawartości.

+1

Można pominąć okno z argumentem 'BTY = 'n'' i wykreślić własne z' rect() '. – jbaums

Odpowiedz

9

Oto przykład jak to zrobić z rect, o czym wspomina @jbaums. Używając poprawnej informacji domyślnej legendy, możesz upewnić się, że pozycja skrzynki jest prawidłowa.

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