I've been trying to make a reproducible version of a diagram of the sampling scheme for a particular field project, mirroring this version that I made by hand in PowerPoint:
Original sampling schematic figure

Geom_mark_rect from ggforce has been super helpful for creating boxes around the collections of points. However, I've been having trouble making the boxes fit more tightly around the points (and not being forced to squares); when I try to make a similarly narrow version of the R figure, the boxes overlap:
Current R sampling schematic figure

It would be great if there were a way to make the geom_mark_rect boxes tighter around the points; any advice on parameters to change or things to try would be greatly appreciated. Or, other creative approaches to trying to make this diagram via ggplot would be so helpful!
The code used to produce the current R figure is below, where data_forchart can be imported from the attached .csv:
facet.labs = c("Tide Pool 1\n (S1)", "Tide Pool 2\n (S2)", "Nearshore\n (N)")
names(facet.labs) = c("S1", "S2", "N")
data_forchart$Location= factor(data_forchart$Location, levels=c("S1", "S2", "N"))
data_forchart$chart_num= factor(data_forchart$chart_num, levels=c("3", "2", "1"))
sample_schema = ggplot(data = data_forchart, aes(x = Time, y = chart_num, shape = Location, color = Time, fill = Time)) +
geom_beeswarm(cex= 2, size = 3) +
geom_mark_rect(expand = .03) +
scale_shape_manual(values = c(15, 17, 16)) +
viridis::scale_color_viridis(discrete=TRUE, begin = 0, end = .97, direction = -1) +
viridis::scale_fill_viridis(discrete=TRUE, begin = 0, end = .97, direction = -1) +
facet_grid(Location ~., scales = "free_y", space = "free_y", switch = "y", labeller = labeller(Location = facet.labs)) +
theme_void(base_size = 16) +
theme(legend.position = "none") +
theme(strip.text.y.left = element_text(angle = 0, hjust = 1, vjust = .9))
It seems quite fiddly getting
geom_mark_rectto adopt a particular aspect ratio. It would be nice ifgeom_recthad the option to have rounded corners, but it doesn't. You can instead usegeom_boxfromggh4x