Polygon label outside
polygon_label_outside(
sp,
which_sp = NULL,
center = NULL,
distance = NULL,
distance_fraction = 0.05,
center_method = c("label", "bbox"),
vector_method = c("label", "farthest"),
segment_method = c("nearest", "vector"),
offset_fraction = c(0, -0.05),
min_degrees = 15,
sp_buffer = 0,
relative = TRUE,
font_cex = 1,
seed = 1,
debug = FALSE,
verbose = FALSE,
...
)
sp::SpatialPolygonsDataFrame
or sp::SpatialPolygons
object, which may contain multiple polygons.
integer
or NULL
; when which_sp
contains one
or more integer
values, they refer to polygons in sp
, and
each will be analyzed in sequence. When which_sp=NULL
then
all the polygons in sp
will be analyzed in sequence.
numeric
vector or matrix with two values indicating
the center position. When center=NULL
then the center is
determined using a method defined by center_method
.
numeric
value indicating the absolute coordinate
distance away from the perimiter of sp
to place labels.
This value is effectively the same as buffer used in
rgeos::gBuffer()
. A vector of values can be provided,
to apply to each polygon in which_sp
. When distance=NULL
the distance_fraction
is used.
numeric
which defines distance
as
a fraction of the x-axis and y-axis range. Note that
distance_fraction
is only used when distance=NULL
.
character
string indicating the method to
determine the center
:
"label"
uses the mean x,y coordinate
of all the polygon label positions;
"bbox"
uses the mean x,y
coordinate of the bounding box that encompasses sp
.
The effect
is to extend outer labels radially around this center point.
Using the mean label position with center_method="label"
is helpful because it ensures labels are extended in all directions
even when most labels are in one upper or lower section of
the sp
polygons.
character
string indicating the point to draw
a vector from the center
position for each polygon:
"farthest"
chooses the farthest point in each polygon from
the center
point;
"label"
uses the position of the label.
Using vector_method="farthest"
works well to label the outer
edge of each polygon. Using vector_method="label"
works well
when the polygon label is set based upon the interior open area
of the polygon.
character
string indicating how to draw the
line segment from the outside label back to the polygon:
"vector"
defines the line segment by extending the line
used by vector_method
along the same direction;
"nearest"
defines a new line to the nearest point on the polygon.
numeric
value passed to spread_degrees()
with the minimum angle in degrees for labels to be placed
around the outside of a polygon.
numeric
value passed to polygon_label_segment()
which defines a buffer when determining the line segment
position at each polygon in which_sp
. A negative value
is recommended, which will create a buffer inside the polygon,
causing the line segment to end slightly inside each polygon.
This effect may be preferred when more than one polygon
boundary is overlapping. An example value sp_buffer=0.1
.
Note that sp_buffer
is applied to each polygon in which_sp
and a vector of values can be provided.
numeric
value passed to set.seed()
to ensure
reproducible results, or seed=NULL
to enable random
results.
logical
indicating whether to plot the results
using base R graphics. When debug=2
it will also add some
visual decorations showing the center point, the points
determined by polygon boundaries.
logical
indicating whether to print verbose output.
additional arguments are ignored.
This function takes a sp::SpatialPolygons
object and
determines an appropriate position for one or more labels
outside the full polygon. For each label two coordinates
are returned, one for the label and one for a line segment
that is drawn to its relevant polygon border.
The expected input is sp::SpatialPolygonsDataFrame
which
contains multiple polygons, and one of the polygons should
be labeled. However, the function should also work with
sp::SpatialPolygons
.
This function differs from some other functions in that
it places multiple labels in context of each other,
to minimize overlapping labels. It also positions
labels outside the full set of polygons, even when
labeling one of the polygons in the input sp
.
For example polygon_label_outside(sp, which_sp=2)
will generate a label position for the second polygon
in sp
and position it outside the full polygon set.
To combine multiple sp::SpatialPolygons
objects,
use sp::rbind(..., makeUniqueIDs=TRUE)
. To combine
sp::SpatialPolygonsDataFrame
with another spatial
object, convert to generic sp::SpatialPolygons
first
using sp::geometry()
then apply sp::rbind()
.
The basic workflow:
A center
point is either provided, or determined
using the polygons in sp
using the center_method
.
For each polygon in which_sp
a directional vector
is defined using vector_method
, which effectively draws
a line from the center
through the chosen point
for each polygon. The end result is an angle for each
label.
vector_method="farthest"
chooses the farthest
point from the center
for each polygon.
vector_method="label"
chooses the best polygon
label position for each polygon, using
sp_polylabelr()
which calls polylabelr::poi()
.
The chosen label angles are spread using spread_degrees()
to ensure the angles are at least min_degrees
apart
from each other. Groups of labels are spaced around the
mean angle for each set of labels that are too close together.
This step defines the label position outside the full sp
polygon.
The last step is to define a line segment from the outer
label position back to the corresponding polygon boundary,
using polygon_label_segment()
. This step has two approaches
with subtle differences:
segment_method="vector"
draws the line segment toward
the reference coordinate for each polygon, as defined
by vector_method
. This method visually draws the line
segment toward where a label might be expected inside
the polygon, which may be visually most intuitive.
However, if the label angles have been changed
by spread_degrees()
then sometimes this point is not
the closest or most intuitive for the label.
segment_method="nearest"
draws the line segment
toward the nearest polygon coordinate to the label
position. Depending upon the polygon shape, the
nearest point may or may not be preferred.
Limitations:
This method does not
limit labels within a plot boundary, therefore a plot
may need to be re-drawn such that labels will fit inside
the plot x-axis and y-axis ranges. When using venndir()
the argument expand_fraction
is intended for this purpose,
for example try venndir(..., expand_fraction=0.2)
.
This method does not detect label size, nor label overlaps,
when positioning labels around the plot. For example, one
may ideally want larger min_degrees
angles at the top
and bottom, but smaller min_degrees
on the left and right,
to accommodate the flow of text. A workaround may be to use
a vector of distance
or distance_fraction
values to alter
the distance of certain labels after visual review.
Other venndir label:
draw_gridtext_groups()
,
polygon_label_fill()
,
polygon_label_segment()
,
sp_polylabelr()
setlist <- list(A=letters, B=sample(letters, 4));
C <- sample(setdiff(letters, setlist$B), 4);
setlist$C <- C;
vo <- venndir(setlist, proportional=FALSE, expand_fraction=0.2);
#> ## (18:06:58) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:5
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 5 A&B 4 4.999106 6.748495 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 5 #262626FF 14 NA NA 1 1 pt 5
#> ## (18:06:58) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:6
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 6 A&C 4 3.773922 4.632696 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 6 #262626FF 14 NA NA 1 1 pt 6
#> ## (18:06:58) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:1
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 1 A **A** 1.90869 6.955722 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 1 #262626FF 14 NA NA 1 2 pt 1
#> ## (18:06:58) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:4
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 4 A 18 3.019531 6.238855 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 4 #262626FF 14 NA NA 1 1 pt 4
#> ## (18:06:58) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:2
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 2 B **B** 8.091055 6.956222 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 2 #262626FF 14 NA NA 1 2 pt 2
#> ## (18:06:58) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:3
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 3 C **C** 5.003101 1.700411 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 3 #262626FF 14 NA NA 1 2 pt 3
segment1 <- polygon_label_outside(sp=vo$venn_spdf, sp_buffer=-0.1, debug=TRUE)
# example drawing labels manually
vo <- venndir(setlist, proportional=FALSE, expand_fraction=0.2);
#> ## (18:06:58) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:5
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 5 A&B 4 4.999106 6.748495 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 5 #262626FF 14 NA NA 1 1 pt 5
#> ## (18:06:58) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:6
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 6 A&C 4 3.773922 4.632696 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 6 #262626FF 14 NA NA 1 1 pt 6
#> ## (18:06:58) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:1
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 1 A **A** 1.90869 6.955722 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 1 #262626FF 14 NA NA 1 2 pt 1
#> ## (18:06:58) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:4
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 4 A 18 3.019531 6.238855 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 4 #262626FF 14 NA NA 1 1 pt 4
#> ## (18:06:58) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:2
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 2 B **B** 8.091055 6.956222 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 2 #262626FF 14 NA NA 1 2 pt 2
#> ## (18:06:58) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:3
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 3 C **C** 5.003101 1.700411 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 3 #262626FF 14 NA NA 1 2 pt 3
segment1 <- polygon_label_outside(sp=vo$venn_spdf, sp_buffer=-0.1)
for (i in seq_along(segment1)) {
lines(segment1[[i]], col=vo$venn_spdf$border[i], lwd=2)
text(
x=segment1[[i]][2,1],
y=segment1[[i]][2,2],
labels=names(segment1)[i],
adj=c(segment1[[i]][1,"adjx"],
segment1[[i]][1,"adjy"])
)
}
# an alternative is to use jamba::drawLabels()
jamba::drawLabels(txt=vo$venn_spdf$label[i],
boxColor=vo$venn_spdf$color[i],
labelCex=1.5,
adjX=segment1[[i]][,"adjx"],
adjY=segment1[[i]][,"adjy"],
x=segment1[[i]][2,1], y=segment1[[i]][2,2])
D <- sample(letters, 4);
setlist$D <- D;
vo4 <- venndir(setlist, sets=1:4);
#> ## (18:06:59) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:9
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 9 A&B&D 2 5.933488 1.768335 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 9 #262626FF 14 NA NA 1 1 pt 9
#> ## (18:06:59) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:6
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 6 A&B 2 2.84112 5.80306 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 6 #262626FF 14 NA NA 1 1 pt 6
#> ## (18:06:59) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:7
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 7 A&C 4 3.136693 2.329982 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 7 #262626FF 14 NA NA 1 1 pt 7
#> ## (18:06:59) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:8
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 8 A&D 2 5.120438 0.9337739 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 8 #262626FF 14 NA NA 1 1 pt 8
#> ## (18:06:59) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:1
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 1 A **A** 0.1166635 4.570002 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 1 #262626FF 14 NA NA 1 2 pt 1
#> ## (18:06:59) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:5
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 5 A 16 1.685066 4.29172 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 5 #262626FF 14 NA NA 1 1 pt 5
#> ## (18:06:59) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:2
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 2 B **B** 3.221462 8.312583 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 2 #262626FF 14 NA NA 1 2 pt 2
#> ## (18:06:59) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:3
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 3 C **C** 7.053857 8.311838 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 3 #262626FF 14 NA NA 1 2 pt 3
#> ## (18:06:59) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:4
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 4 D **D** 10.13339 4.570171 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 4 #262626FF 14 NA NA 1 2 pt 4
polygon_label_outside(vo4$venn_spdf, debug=TRUE, sp_buffer=-0.1)
par("xpd"=TRUE);
par("mfrow"=c(4,2));
st <- "nearest";
vo <- venndir(setlist, proportional=TRUE, seed=1,
expand_fraction=0.2, do_plot=FALSE);
for (vm in c("farthest", "label")) {
for (cm in c("label", "bbox")) {
for (st in c("vector", "nearest")) {
plot(vo$venn_spdf, xlim=c(-5, 5))
title(cex.main=0.8,
line=1.6,
main=paste0("vector_method:", vm,
"\ncenter_method:", cm,
"\nsegment_method:", st));
segmentxy <- polygon_label_outside(sp=vo$venn_spdf,
which_sp=2:length(vo$venn_spdf),
sp_buffer=-0.1,
center_method=cm,
vector_method=vm,
debug=TRUE)
}
}
}
par("mfrow"=c(1,1))
par("mfrow"=c(1, 2));
st <- "nearest";
for (cm in c("label", "bbox")) {
for (vm in c("farthest", "label")) {
for (st in c("vector", "nearest")) {
set.seed(12);
vo <- venndir(setlist, proportional=TRUE,
expand_fraction=0.2);
title(cex.main=1,
main=paste0("vector_method:", vm,
"\ncenter_method:", cm,
"\nsegment_method:", st));
segmentxy <- polygon_label_outside(sp=vo$venn_spdf,
center_method=cm,
vector_method=vm,
debug=2)
}
}
}
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:9
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 9 A&B&D 2 1.013339 -0.2580648 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 9 #262626FF 14 NA NA 1 1 pt 9
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:6
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 6 A&B 2 2.030612 0.2289342 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 6 #262626FF 14 NA NA 1 1 pt 6
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:7
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 7 A&C 4 -1.237139 1.239278 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 7 #262626FF 14 NA NA 1 1 pt 7
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:8
#> overlap_set text x y vjust hjust halign rot padding r
#> 8 A&D 2 -0.02682582 -0.6965299 0.5 0.5 0.5 0 3 3
#> r_unit label_col fontsize border_col box_fill box_lty box_lwd padding_unit
#> 8 pt #262626FF 14 NA NA 1 1 pt
#> num
#> 8 8
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:5
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 5 A 16 -1.593034 -1.013114 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 5 #262626FF 14 NA NA 1 1 pt 5
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:1
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 1 A **A** -2.904726 -1.589289 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 1 #262626FF 14 NA NA 1 2 pt 1
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:2
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 2 B **B** -0.2781953 3.08569 0 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 2 #262626FF 14 NA NA 1 2 pt 2
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:3
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 3 C **C** -1.951586 2.509887 0 1 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 3 #262626FF 14 NA NA 1 2 pt 3
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:4
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 4 D **D** 1.390146 2.702163 0 0 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 4 #262626FF 14 NA NA 1 2 pt 4
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:9
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 9 A&B&D 2 1.013339 -0.2580648 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 9 #262626FF 14 NA NA 1 1 pt 9
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:6
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 6 A&B 2 2.030612 0.2289342 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 6 #262626FF 14 NA NA 1 1 pt 6
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:7
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 7 A&C 4 -1.237139 1.239278 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 7 #262626FF 14 NA NA 1 1 pt 7
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:8
#> overlap_set text x y vjust hjust halign rot padding r
#> 8 A&D 2 -0.02682582 -0.6965299 0.5 0.5 0.5 0 3 3
#> r_unit label_col fontsize border_col box_fill box_lty box_lwd padding_unit
#> 8 pt #262626FF 14 NA NA 1 1 pt
#> num
#> 8 8
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:5
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 5 A 16 -1.593034 -1.013114 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 5 #262626FF 14 NA NA 1 1 pt 5
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:1
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 1 A **A** -2.904726 -1.589289 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 1 #262626FF 14 NA NA 1 2 pt 1
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:2
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 2 B **B** -0.2781953 3.08569 0 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 2 #262626FF 14 NA NA 1 2 pt 2
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:3
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 3 C **C** -1.951586 2.509887 0 1 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 3 #262626FF 14 NA NA 1 2 pt 3
#> ## (18:07:00) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:4
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 4 D **D** 1.390146 2.702163 0 0 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 4 #262626FF 14 NA NA 1 2 pt 4
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:9
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 9 A&B&D 2 1.013339 -0.2580648 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 9 #262626FF 14 NA NA 1 1 pt 9
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:6
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 6 A&B 2 2.030612 0.2289342 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 6 #262626FF 14 NA NA 1 1 pt 6
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:7
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 7 A&C 4 -1.237139 1.239278 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 7 #262626FF 14 NA NA 1 1 pt 7
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:8
#> overlap_set text x y vjust hjust halign rot padding r
#> 8 A&D 2 -0.02682582 -0.6965299 0.5 0.5 0.5 0 3 3
#> r_unit label_col fontsize border_col box_fill box_lty box_lwd padding_unit
#> 8 pt #262626FF 14 NA NA 1 1 pt
#> num
#> 8 8
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:5
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 5 A 16 -1.593034 -1.013114 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 5 #262626FF 14 NA NA 1 1 pt 5
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:1
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 1 A **A** -2.904726 -1.589289 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 1 #262626FF 14 NA NA 1 2 pt 1
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:2
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 2 B **B** -0.2781953 3.08569 0 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 2 #262626FF 14 NA NA 1 2 pt 2
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:3
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 3 C **C** -1.951586 2.509887 0 1 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 3 #262626FF 14 NA NA 1 2 pt 3
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:4
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 4 D **D** 1.390146 2.702163 0 0 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 4 #262626FF 14 NA NA 1 2 pt 4
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:9
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 9 A&B&D 2 1.013339 -0.2580648 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 9 #262626FF 14 NA NA 1 1 pt 9
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:6
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 6 A&B 2 2.030612 0.2289342 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 6 #262626FF 14 NA NA 1 1 pt 6
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:7
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 7 A&C 4 -1.237139 1.239278 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 7 #262626FF 14 NA NA 1 1 pt 7
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:8
#> overlap_set text x y vjust hjust halign rot padding r
#> 8 A&D 2 -0.02682582 -0.6965299 0.5 0.5 0.5 0 3 3
#> r_unit label_col fontsize border_col box_fill box_lty box_lwd padding_unit
#> 8 pt #262626FF 14 NA NA 1 1 pt
#> num
#> 8 8
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:5
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 5 A 16 -1.593034 -1.013114 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 5 #262626FF 14 NA NA 1 1 pt 5
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:1
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 1 A **A** -2.904726 -1.589289 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 1 #262626FF 14 NA NA 1 2 pt 1
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:2
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 2 B **B** -0.2781953 3.08569 0 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 2 #262626FF 14 NA NA 1 2 pt 2
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:3
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 3 C **C** -1.951586 2.509887 0 1 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 3 #262626FF 14 NA NA 1 2 pt 3
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:4
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 4 D **D** 1.390146 2.702163 0 0 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 4 #262626FF 14 NA NA 1 2 pt 4
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:9
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 9 A&B&D 2 1.013339 -0.2580648 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 9 #262626FF 14 NA NA 1 1 pt 9
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:6
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 6 A&B 2 2.030612 0.2289342 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 6 #262626FF 14 NA NA 1 1 pt 6
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:7
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 7 A&C 4 -1.237139 1.239278 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 7 #262626FF 14 NA NA 1 1 pt 7
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:8
#> overlap_set text x y vjust hjust halign rot padding r
#> 8 A&D 2 -0.02682582 -0.6965299 0.5 0.5 0.5 0 3 3
#> r_unit label_col fontsize border_col box_fill box_lty box_lwd padding_unit
#> 8 pt #262626FF 14 NA NA 1 1 pt
#> num
#> 8 8
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:5
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 5 A 16 -1.593034 -1.013114 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 5 #262626FF 14 NA NA 1 1 pt 5
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:1
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 1 A **A** -2.904726 -1.589289 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 1 #262626FF 14 NA NA 1 2 pt 1
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:2
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 2 B **B** -0.2781953 3.08569 0 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 2 #262626FF 14 NA NA 1 2 pt 2
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:3
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 3 C **C** -1.951586 2.509887 0 1 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 3 #262626FF 14 NA NA 1 2 pt 3
#> ## (18:07:01) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:4
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 4 D **D** 1.390146 2.702163 0 0 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 4 #262626FF 14 NA NA 1 2 pt 4
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:9
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 9 A&B&D 2 1.013339 -0.2580648 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 9 #262626FF 14 NA NA 1 1 pt 9
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:6
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 6 A&B 2 2.030612 0.2289342 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 6 #262626FF 14 NA NA 1 1 pt 6
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:7
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 7 A&C 4 -1.237139 1.239278 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 7 #262626FF 14 NA NA 1 1 pt 7
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:8
#> overlap_set text x y vjust hjust halign rot padding r
#> 8 A&D 2 -0.02682582 -0.6965299 0.5 0.5 0.5 0 3 3
#> r_unit label_col fontsize border_col box_fill box_lty box_lwd padding_unit
#> 8 pt #262626FF 14 NA NA 1 1 pt
#> num
#> 8 8
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:5
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 5 A 16 -1.593034 -1.013114 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 5 #262626FF 14 NA NA 1 1 pt 5
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:1
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 1 A **A** -2.904726 -1.589289 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 1 #262626FF 14 NA NA 1 2 pt 1
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:2
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 2 B **B** -0.2781953 3.08569 0 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 2 #262626FF 14 NA NA 1 2 pt 2
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:3
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 3 C **C** -1.951586 2.509887 0 1 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 3 #262626FF 14 NA NA 1 2 pt 3
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:4
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 4 D **D** 1.390146 2.702163 0 0 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 4 #262626FF 14 NA NA 1 2 pt 4
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:9
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 9 A&B&D 2 1.013339 -0.2580648 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 9 #262626FF 14 NA NA 1 1 pt 9
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:6
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 6 A&B 2 2.030612 0.2289342 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 6 #262626FF 14 NA NA 1 1 pt 6
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:7
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 7 A&C 4 -1.237139 1.239278 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 7 #262626FF 14 NA NA 1 1 pt 7
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:8
#> overlap_set text x y vjust hjust halign rot padding r
#> 8 A&D 2 -0.02682582 -0.6965299 0.5 0.5 0.5 0 3 3
#> r_unit label_col fontsize border_col box_fill box_lty box_lwd padding_unit
#> 8 pt #262626FF 14 NA NA 1 1 pt
#> num
#> 8 8
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:5
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 5 A 16 -1.593034 -1.013114 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 5 #262626FF 14 NA NA 1 1 pt 5
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:1
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 1 A **A** -2.904726 -1.589289 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 1 #262626FF 14 NA NA 1 2 pt 1
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:2
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 2 B **B** -0.2781953 3.08569 0 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 2 #262626FF 14 NA NA 1 2 pt 2
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:3
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 3 C **C** -1.951586 2.509887 0 1 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 3 #262626FF 14 NA NA 1 2 pt 3
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:4
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 4 D **D** 1.390146 2.702163 0 0 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 4 #262626FF 14 NA NA 1 2 pt 4
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:9
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 9 A&B&D 2 1.013339 -0.2580648 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 9 #262626FF 14 NA NA 1 1 pt 9
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:6
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 6 A&B 2 2.030612 0.2289342 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 6 #262626FF 14 NA NA 1 1 pt 6
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:7
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 7 A&C 4 -1.237139 1.239278 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 7 #262626FF 14 NA NA 1 1 pt 7
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:8
#> overlap_set text x y vjust hjust halign rot padding r
#> 8 A&D 2 -0.02682582 -0.6965299 0.5 0.5 0.5 0 3 3
#> r_unit label_col fontsize border_col box_fill box_lty box_lwd padding_unit
#> 8 pt #262626FF 14 NA NA 1 1 pt
#> num
#> 8 8
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:5
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 5 A 16 -1.593034 -1.013114 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 5 #262626FF 14 NA NA 1 1 pt 5
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:1
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 1 A **A** -2.904726 -1.589289 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 1 #262626FF 14 NA NA 1 2 pt 1
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:2
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 2 B **B** -0.2781953 3.08569 0 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 2 #262626FF 14 NA NA 1 2 pt 2
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:3
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 3 C **C** -1.951586 2.509887 0 1 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 3 #262626FF 14 NA NA 1 2 pt 3
#> ## (18:07:02) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:4
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 4 D **D** 1.390146 2.702163 0 0 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 4 #262626FF 14 NA NA 1 2 pt 4
vo <- venndir(setlist, proportional=TRUE);
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:9
#> overlap_set text x y vjust hjust halign rot padding r
#> 9 A&B&D 2 -1.190155 -0.03631255 0.5 0.5 0.5 0 3 3
#> r_unit label_col fontsize border_col box_fill box_lty box_lwd padding_unit
#> 9 pt #262626FF 14 NA NA 1 1 pt
#> num
#> 9 9
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:6
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 6 A&B 2 -2.311179 0.08774424 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 6 #262626FF 14 NA NA 1 1 pt 6
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:7
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 7 A&C 4 1.644541 0.1547713 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 7 #262626FF 14 NA NA 1 1 pt 7
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:8
#> overlap_set text x y vjust hjust halign rot padding r
#> 8 A&D 2 -0.06924115 -0.1668882 0.5 0.5 0.5 0 3 3
#> r_unit label_col fontsize border_col box_fill box_lty box_lwd padding_unit
#> 8 pt #262626FF 14 NA NA 1 1 pt
#> num
#> 8 8
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:5
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 5 A 16 0.2808884 1.825941 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 5 #262626FF 14 NA NA 1 1 pt 5
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:1
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 1 A **A** 0.670684 3.086065 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 1 #262626FF 14 NA NA 1 2 pt 1
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:2
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 2 B **B** -3.171028 0.3651506 0 1 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 2 #262626FF 14 NA NA 1 2 pt 2
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:3
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 3 C **C** 3.133002 -0.1430182 0.5 0 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 3 #262626FF 14 NA NA 1 2 pt 3
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:4
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 4 D **D** -2.985684 -1.124365 1 1 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 4 #262626FF 14 NA NA 1 2 pt 4
segmentxy <- polygon_label_outside(sp=vo$venn_spdf, debug=2)
set.seed(1)
vo <- venndir(setlist, proportional=TRUE, expand_fraction=0.3);
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:9
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 9 A&B&D 2 0.7551151 -0.3501513 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 9 #262626FF 14 NA NA 1 1 pt 9
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:6
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 6 A&B 2 0.08287535 0.555899 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 6 #262626FF 14 NA NA 1 1 pt 6
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:7
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 7 A&C 4 -1.046969 1.676951 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 7 #262626FF 14 NA NA 1 1 pt 7
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:8
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 8 A&D 2 1.470657 -1.222763 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 8 #262626FF 14 NA NA 1 1 pt 8
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:5
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 5 A 16 -1.937101 -0.6403962 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 5 #262626FF 14 NA NA 1 1 pt 5
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:1
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 1 A **A** -3.542676 -1.041456 0.5 0.5 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 1 #262626FF 14 NA NA 1 2 pt 1
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:2
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 2 B **B** 2.533295 0.6895298 0 0 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 2 #262626FF 14 NA NA 1 2 pt 2
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:3
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 3 C **C** -1.302605 3.074536 0 1 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 3 #262626FF 14 NA NA 1 2 pt 3
#> ## (18:07:03) 07Jul2023: draw_gridtext_groups(): grob_group_roundrect(), k:4
#> overlap_set text x y vjust hjust halign rot padding r r_unit
#> 4 D **D** 2.341993 -1.273083 1 0 0.5 0 3 3 pt
#> label_col fontsize border_col box_fill box_lty box_lwd padding_unit num
#> 4 #262626FF 14 NA NA 1 2 pt 4
segmentxy <- polygon_label_outside(sp=vo$venn_spdf,
debug=TRUE, segment_method="nearest")
segmentxy <- polygon_label_outside(sp=vo$venn_spdf,
debug=TRUE, segment_method="vector")