R 水平接头G形接头D';t不要总是连接到箱子的边缘

R 水平接头G形接头D';t不要总是连接到箱子的边缘,r,grid,grob,gmisc,R,Grid,Grob,Gmisc,我正在运行这个示例,并注意到将总数连接到不合格boxGrob的水平箭头并不总是接触不合格boxGrob的左边缘 这似乎取决于RStudio中查看窗口的宽度。垂直箭头似乎并非如此,它似乎总是完美地连接到正确的boxGrob顶部 有没有办法迫使箭头触碰盒子的侧面而不再继续?我试图将输出保存为pdf格式,默认情况下,它似乎使用了更宽的打印窗口,因此我的所有水平箭头都不会与正确的框对齐 窄打印窗口: library(grid) library(Gmisc) vp <- grid::viewpor

我正在运行这个示例,并注意到将总数连接到不合格
boxGrob
的水平箭头并不总是接触不合格
boxGrob
的左边缘

这似乎取决于RStudio中查看窗口的宽度。垂直箭头似乎并非如此,它似乎总是完美地连接到正确的
boxGrob
顶部

有没有办法迫使箭头触碰盒子的侧面而不再继续?我试图将输出保存为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, "-")

宽打印窗口:

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, "-")

我曾尝试手动创建一个面积更大的
视口
,但这并没有改变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, "-")
库(网格)
图书馆(Gmisc)

目前,这个问题可以用绝对单位来解决

示例代码:

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

(非常棒,对我有用,谢谢:)你说“暂时”。这是一个已知的问题吗?“暂时”的原因是我想你可能喜欢相对尺度(而且我的英语很差,对不起)。如果你对绝对量表满意,请忽略这句话。我很高兴你高兴。