connectGrob {Gmisc} | R Documentation |
Connect boxes with an arrow
Description
The function creates a grob that links two boxes together. It looks for which side it should attach the arrow, e.g. if the start is on top of the bottom it should attach to the bottom edge of ther start box and then to the top at the end.
Usage
connectGrob(
start,
end,
type = c("vertical", "horizontal", "L", "-", "Z", "N"),
subelmnt = c("right", "left"),
lty_gp = getOption("connectGrob", default = gpar(fill = "black")),
arrow_obj = getOption("connectGrobArrow", default = arrow(ends = "last", type =
"closed"))
)
## S3 method for class 'connect_boxes'
print(x, ...)
## S3 method for class 'connect_boxes'
plot(x, ...)
Arguments
start |
The start box |
end |
The end box |
type |
How the boxes are stacked. The |
subelmnt |
If we have a split box we can specify the right/left x as the connector point. |
lty_gp |
The |
arrow_obj |
The arrow spec according to |
x |
The grob to print/plot |
... |
Passed to |
Details
The exact positions of the line is stored at the attr(..., "line")
.
If you want to draw your own custom line all you need to do is check which
attr(my_line, "line")$x
and attr(my_line, "line")$y
you want
to attach to and then create your own custom linesGrob
.
Value
grob with an arrow
See Also
Other flowchart components:
align
,
boxGrob()
,
boxPropGrob()
,
coords()
,
distance()
,
moveBox()
,
spread
Examples
library(grid)
grid.newpage()
# Initiate the boxes that we want to connect
start <- boxGrob("Top", x = .5, y = .8)
end <- boxGrob("Bottom", x = .5, y = .2)
side <- boxPropGrob("Side", "Left", "Right", prop = .3, x = .2, y = .8)
sub_side_left <- boxGrob("Left", x = attr(side, "coords")$left_x, y = .5)
sub_side_right <- boxGrob("Right", x = attr(side, "coords")$right_x, y = .5)
exclude <- boxGrob("Exclude:\n - Too sick\n - Prev. surgery", x = .8, y = .5, just = "left")
# Connect the boxes and print/plot them
connectGrob(start, end, "vertical")
connectGrob(start, side, "horizontal")
connectGrob(side, sub_side_left, "v", "l")
connectGrob(side, sub_side_right, "v", "r")
connectGrob(start, exclude, "L")
# Print the grobs
start
end
side
exclude
sub_side_left
sub_side_right