horizo​​ntal connectGrobs 并不总是连接到 boxGrob 的边缘

horizontal connectGrobs don't always connect to the edge of the boxGrob

我是 运行 示例 here,并注意到连接总计和不合格 boxGrobs 的水平箭头并不总是触及不合格的左边缘boxGrob.

好像要看RStudio中的查看宽度window。垂直箭头似乎并非如此,它似乎总是完美地连接到正确 boxGrob.

的顶部

有没有办法强制箭头触及盒子的侧面而不再进一步移动?我正在尝试将输出保存为 pdf,默认情况下它似乎使用更宽的绘图 window 所以我所有的水平箭头都不与正确的框对齐。

窄绘图window:

宽绘图window:

我尝试手动创建一个面积更大的 viewport,但这并没有改变 pdf 中的任何内容:

代码:

library(grid)
library(Gmisc)

vp <- grid::viewport(x = 10, y = 10, clip = 'on', xscale = c(0, 10), 
                     yscale = c(0, 10), default.units = 'inch') 
grid::pushViewport(vp)

leftx  <- .25
midx   <- .5
rightx <- .75
width  <- .4
gp <- gpar(fill = "lightgrey")

# add box/connectors to the plot
(total <- boxGrob("Total\n N = NNN", 
 x=midx, y=.9, box_gp = gp, width = width))
(rando <- boxGrob("Randomized\n N = NNN", 
 x=midx, y=.75, box_gp = gp, width = width))

connectGrob(total, rando, "v")

(inel <- boxGrob("Ineligible\n N = NNN", 
 x=rightx, y=.825, box_gp = gp, width = .25, height = .05))

connectGrob(total, inel, "-")

暂时可以使用绝对单位来解决这个问题。

示例代码:

(inel <- boxGrob("Ineligible\n N = NNN", 
                 x=rightx, y=.825, box_gp = gp, width = unit(2, "inch"), height = .05))