如何缩小图例框的内边距

时间:2014-04-07 01:06:15

标签: r legend margins

我正在绘制如下图表。我用来生成图例的代码是

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

enter image description here

问题是内边距(垂直方向)太大而我想减少它。我想缩小内部边缘的另一种方法是减少" cex"进一步。但随后盒子里的文字也会变小。有没有办法减少盒子但不减少其内容。

1 个答案:

答案 0 :(得分:9)

这是一个如何使用rect执行此操作的示例,如@jbaums所述。通过使用默认图例的rect信息,您可以确保框位置正确。

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