如何缩小图例框的内边距

wen*_*wen 7 r margins legend

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

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

在此输入图像描述

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

koe*_*ker 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')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述