горизонтальные connectGrobs не всегда соединяются с краем boxGrob - PullRequest
4 голосов
/ 25 сентября 2019

Я запускал пример здесь и заметил, что горизонтальная стрелка, соединяющая Итог с Неверным boxGrobs, не всегда касается левого края Неверного boxGrob.

Кажется, это зависит от ширины окна просмотра в RStudio.Это, похоже, не относится к вертикальной стрелке, которая, кажется, всегда идеально соединяется с вершиной правильного boxGrob.

. Есть ли способ заставить стрелку коснуться боковой стороны коробки?а дальше не идти?Я пытаюсь сохранить выходные данные в формате PDF, и по умолчанию кажется, что оно использует более широкое окно черчения, поэтому все мои горизонтальные стрелки не совпадают с правильными полями.

Узкое окно черчения:

image

Широкое окно печати:

image

Я пытался вручную создать 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, "-")

1 Ответ

1 голос
/ 25 сентября 2019

В настоящее время эту проблему можно решить с помощью абсолютной единицы.

Пример кода:

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