grid:当单位为“npc”而不是“inch”时,如何强制grid.layout的大小?

时间:2012-10-19 20:50:22

标签: r grid-layout

为什么grid.rect()不符合以下图中的尺寸(区域(2,2),(2,4),(4,2),(4,4))?换句话说,为什么绘制的矩形与这些区域不完全匹配?单位为“英寸”,这有效(但我想使用“相对”坐标)。

require(grid)

inch <- FALSE # TRUE

d <- if(inch) 5 else 1
pspc <- d*c(0.3, 0.3) # width, height of panels
spc <- d*c(0.05, 0.05) # width, height of space
axlabspc <- d*c(0.1, 0.1) # width y label, height x label
labspc <- d*c(0.05, 0.05) # width label boxes, height label boxes

par. <- par(no.readonly=TRUE)
gl <- grid.layout(5, 5, default.units=if(inch) "inches" else "npc",
                  widths=c(axlabspc[1], pspc[1], spc[1], pspc[1], labspc[1]),
                  heights=c(labspc[2], pspc[2], spc[2], pspc[2], axlabspc[2]))
grid.show.layout(gl)
pushViewport(viewport(layout=gl))
for(i in 1:2) {
    for(j in 1:2) {
        pushViewport(viewport(layout.pos.row=2*i, layout.pos.col=2*j, name="foo"))
        grid.rect()
        upViewport()
    }
}
par(par.)

1 个答案:

答案 0 :(得分:0)

使用grid.show.layout(gl, vp=viewport(width=1.25, height=1.25))然后就可以了。