diff --git a/NEWS.md b/NEWS.md
index 0f6c3ac992..e8b0c809ff 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,5 +1,8 @@
# ggplot2 (development version)
+* All geoms now have consistent exposure of linejoin and lineend parameters, and
+ the guide keys will now respect these settings (@thomasp85, #4653)
+
* `geom_sf()` now respects `arrow` parameter for lines (@jakeruss, #4659)
* Updated documentation for `print.ggplot` to reflect that it returns
diff --git a/R/geom-abline.r b/R/geom-abline.r
index 35b53ce57f..9778e76386 100644
--- a/R/geom-abline.r
+++ b/R/geom-abline.r
@@ -124,7 +124,7 @@ geom_abline <- function(mapping = NULL, data = NULL,
#' @usage NULL
#' @export
GeomAbline <- ggproto("GeomAbline", Geom,
- draw_panel = function(data, panel_params, coord) {
+ draw_panel = function(data, panel_params, coord, lineend = "butt") {
ranges <- coord$backtransform_range(panel_params)
if (coord$clip == "on" && coord$is_linear()) {
@@ -138,7 +138,7 @@ GeomAbline <- ggproto("GeomAbline", Geom,
data$y <- ranges$x[1] * data$slope + data$intercept
data$yend <- ranges$x[2] * data$slope + data$intercept
- GeomSegment$draw_panel(unique(data), panel_params, coord)
+ GeomSegment$draw_panel(unique(data), panel_params, coord, lineend = lineend)
},
default_aes = aes(colour = "black", size = 0.5, linetype = 1, alpha = NA),
diff --git a/R/geom-bar.r b/R/geom-bar.r
index 54fc35684e..68d22f0b8b 100644
--- a/R/geom-bar.r
+++ b/R/geom-bar.r
@@ -137,8 +137,15 @@ GeomBar <- ggproto("GeomBar", GeomRect,
flip_data(data, params$flipped_aes)
},
- draw_panel = function(self, data, panel_params, coord, width = NULL, flipped_aes = FALSE) {
+ draw_panel = function(self, data, panel_params, coord, lineend = "butt",
+ linejoin = "mitre", width = NULL, flipped_aes = FALSE) {
# Hack to ensure that width is detected as a parameter
- ggproto_parent(GeomRect, self)$draw_panel(data, panel_params, coord)
+ ggproto_parent(GeomRect, self)$draw_panel(
+ data,
+ panel_params,
+ coord,
+ lineend = lineend,
+ linejoin = linejoin
+ )
}
)
diff --git a/R/geom-boxplot.r b/R/geom-boxplot.r
index 4a2d44ce88..e90211b251 100644
--- a/R/geom-boxplot.r
+++ b/R/geom-boxplot.r
@@ -205,12 +205,12 @@ GeomBoxplot <- ggproto("GeomBoxplot", Geom,
flip_data(data, params$flipped_aes)
},
- draw_group = function(data, panel_params, coord, fatten = 2,
- outlier.colour = NULL, outlier.fill = NULL,
- outlier.shape = 19,
+ draw_group = function(data, panel_params, coord, lineend = "butt",
+ linejoin = "mitre", fatten = 2, outlier.colour = NULL,
+ outlier.fill = NULL, outlier.shape = 19,
outlier.size = 1.5, outlier.stroke = 0.5,
- outlier.alpha = NULL,
- notch = FALSE, notchwidth = 0.5, varwidth = FALSE, flipped_aes = FALSE) {
+ outlier.alpha = NULL, notch = FALSE, notchwidth = 0.5,
+ varwidth = FALSE, flipped_aes = FALSE) {
data <- flip_data(data, flipped_aes)
# this may occur when using geom_boxplot(stat = "identity")
if (nrow(data) != 1) {
@@ -274,8 +274,16 @@ GeomBoxplot <- ggproto("GeomBoxplot", Geom,
ggname("geom_boxplot", grobTree(
outliers_grob,
- GeomSegment$draw_panel(whiskers, panel_params, coord),
- GeomCrossbar$draw_panel(box, fatten = fatten, panel_params, coord, flipped_aes = flipped_aes)
+ GeomSegment$draw_panel(whiskers, panel_params, coord, lineend = lineend),
+ GeomCrossbar$draw_panel(
+ box,
+ fatten = fatten,
+ panel_params,
+ coord,
+ lineend = lineend,
+ linejoin = linejoin,
+ flipped_aes = flipped_aes
+ )
))
},
diff --git a/R/geom-col.r b/R/geom-col.r
index be91cfc480..510e57c9d8 100644
--- a/R/geom-col.r
+++ b/R/geom-col.r
@@ -56,8 +56,15 @@ GeomCol <- ggproto("GeomCol", GeomRect,
flip_data(data, params$flipped_aes)
},
- draw_panel = function(self, data, panel_params, coord, width = NULL, flipped_aes = FALSE) {
+ draw_panel = function(self, data, panel_params, coord, lineend = "butt",
+ linejoin = "mitre", width = NULL, flipped_aes = FALSE) {
# Hack to ensure that width is detected as a parameter
- ggproto_parent(GeomRect, self)$draw_panel(data, panel_params, coord)
+ ggproto_parent(GeomRect, self)$draw_panel(
+ data,
+ panel_params,
+ coord,
+ lineend = lineend,
+ linejoin = linejoin
+ )
}
)
diff --git a/R/geom-crossbar.r b/R/geom-crossbar.r
index 05fa058460..89c1c60cff 100644
--- a/R/geom-crossbar.r
+++ b/R/geom-crossbar.r
@@ -47,7 +47,9 @@ GeomCrossbar <- ggproto("GeomCrossbar", Geom,
draw_key = draw_key_crossbar,
- draw_panel = function(data, panel_params, coord, fatten = 2.5, width = NULL, flipped_aes = FALSE) {
+ draw_panel = function(data, panel_params, coord, lineend = "butt",
+ linejoin = "mitre", fatten = 2.5, width = NULL,
+ flipped_aes = FALSE) {
data <- flip_data(data, flipped_aes)
middle <- transform(data, x = xmin, xend = xmax, yend = y, size = size * fatten, alpha = NA)
@@ -99,8 +101,8 @@ GeomCrossbar <- ggproto("GeomCrossbar", Geom,
middle <- flip_data(middle, flipped_aes)
ggname("geom_crossbar", gTree(children = gList(
- GeomPolygon$draw_panel(box, panel_params, coord),
- GeomSegment$draw_panel(middle, panel_params, coord)
+ GeomPolygon$draw_panel(box, panel_params, coord, lineend = lineend, linejoin = linejoin),
+ GeomSegment$draw_panel(middle, panel_params, coord, lineend = lineend, linejoin = linejoin)
)))
}
)
diff --git a/R/geom-dotplot.r b/R/geom-dotplot.r
index 9b34e517f1..e866e834a0 100644
--- a/R/geom-dotplot.r
+++ b/R/geom-dotplot.r
@@ -264,7 +264,7 @@ GeomDotplot <- ggproto("GeomDotplot", Geom,
},
- draw_group = function(data, panel_params, coord, na.rm = FALSE,
+ draw_group = function(data, panel_params, coord, lineend = "butt", na.rm = FALSE,
binaxis = "x", stackdir = "up", stackratio = 1,
dotsize = 1, stackgroups = FALSE) {
if (!coord$is_linear()) {
@@ -292,7 +292,8 @@ GeomDotplot <- ggproto("GeomDotplot", Geom,
default.units = "npc",
gp = gpar(col = alpha(tdata$colour, tdata$alpha),
fill = alpha(tdata$fill, tdata$alpha),
- lwd = tdata$stroke, lty = tdata$linetype))
+ lwd = tdata$stroke, lty = tdata$linetype,
+ lineend = lineend))
)
},
diff --git a/R/geom-errorbar.r b/R/geom-errorbar.r
index 4840d75d10..dd2cfd5551 100644
--- a/R/geom-errorbar.r
+++ b/R/geom-errorbar.r
@@ -52,7 +52,7 @@ GeomErrorbar <- ggproto("GeomErrorbar", Geom,
flip_data(data, params$flipped_aes)
},
- draw_panel = function(data, panel_params, coord, width = NULL, flipped_aes = FALSE) {
+ draw_panel = function(data, panel_params, coord, lineend = "butt", width = NULL, flipped_aes = FALSE) {
data <- flip_data(data, flipped_aes)
x <- as.vector(rbind(data$xmin, data$xmax, NA, data$x, data$x, NA, data$xmin, data$xmax))
y <- as.vector(rbind(data$ymax, data$ymax, NA, data$ymax, data$ymin, NA, data$ymin, data$ymin))
@@ -67,6 +67,6 @@ GeomErrorbar <- ggproto("GeomErrorbar", Geom,
row.names = 1:(nrow(data) * 8)
))
data <- flip_data(data, flipped_aes)
- GeomPath$draw_panel(data, panel_params, coord)
+ GeomPath$draw_panel(data, panel_params, coord, lineend = lineend)
}
)
diff --git a/R/geom-errorbarh.r b/R/geom-errorbarh.r
index 7c48dd9f5c..91d3569e86 100644
--- a/R/geom-errorbarh.r
+++ b/R/geom-errorbarh.r
@@ -67,7 +67,7 @@ GeomErrorbarh <- ggproto("GeomErrorbarh", Geom,
)
},
- draw_panel = function(data, panel_params, coord, height = NULL) {
+ draw_panel = function(data, panel_params, coord, height = NULL, lineend = "butt") {
GeomPath$draw_panel(new_data_frame(list(
x = as.vector(rbind(data$xmax, data$xmax, NA, data$xmax, data$xmin, NA, data$xmin, data$xmin)),
y = as.vector(rbind(data$ymin, data$ymax, NA, data$y, data$y, NA, data$ymin, data$ymax)),
@@ -77,6 +77,6 @@ GeomErrorbarh <- ggproto("GeomErrorbarh", Geom,
linetype = rep(data$linetype, each = 8),
group = rep(1:(nrow(data)), each = 8),
row.names = 1:(nrow(data) * 8)
- )), panel_params, coord)
+ )), panel_params, coord, lineend = lineend)
}
)
diff --git a/R/geom-hex.r b/R/geom-hex.r
index 6879038724..2e18b221e9 100644
--- a/R/geom-hex.r
+++ b/R/geom-hex.r
@@ -54,7 +54,8 @@ geom_hex <- function(mapping = NULL, data = NULL,
#' @usage NULL
#' @export
GeomHex <- ggproto("GeomHex", Geom,
- draw_group = function(data, panel_params, coord) {
+ draw_group = function(data, panel_params, coord, lineend = "butt",
+ linejoin = "mitre", linemitre = 10) {
if (!inherits(coord, "CoordCartesian")) {
abort("geom_hex() only works with Cartesian coordinates")
}
@@ -66,7 +67,10 @@ GeomHex <- ggproto("GeomHex", Geom,
col = coords$colour,
fill = alpha(coords$fill, coords$alpha),
lwd = coords$size * .pt,
- lty = coords$linetype
+ lty = coords$linetype,
+ lineend = lineend,
+ linejoin = linejoin,
+ linemitre = linemitre
)
))
},
diff --git a/R/geom-hline.r b/R/geom-hline.r
index d242f74b08..8e0151d012 100644
--- a/R/geom-hline.r
+++ b/R/geom-hline.r
@@ -44,7 +44,7 @@ geom_hline <- function(mapping = NULL, data = NULL,
#' @usage NULL
#' @export
GeomHline <- ggproto("GeomHline", Geom,
- draw_panel = function(data, panel_params, coord) {
+ draw_panel = function(data, panel_params, coord, lineend = "butt") {
ranges <- coord$backtransform_range(panel_params)
data$x <- ranges$x[1]
@@ -52,7 +52,7 @@ GeomHline <- ggproto("GeomHline", Geom,
data$y <- data$yintercept
data$yend <- data$yintercept
- GeomSegment$draw_panel(unique(data), panel_params, coord)
+ GeomSegment$draw_panel(unique(data), panel_params, coord, lineend = lineend)
},
default_aes = aes(colour = "black", size = 0.5, linetype = 1, alpha = NA),
diff --git a/R/geom-linerange.r b/R/geom-linerange.r
index 005f93de3a..5e9462013b 100644
--- a/R/geom-linerange.r
+++ b/R/geom-linerange.r
@@ -113,10 +113,10 @@ GeomLinerange <- ggproto("GeomLinerange", Geom,
data
},
- draw_panel = function(data, panel_params, coord, flipped_aes = FALSE) {
+ draw_panel = function(data, panel_params, coord, lineend = "butt", flipped_aes = FALSE) {
data <- flip_data(data, flipped_aes)
data <- transform(data, xend = x, y = ymin, yend = ymax)
data <- flip_data(data, flipped_aes)
- ggname("geom_linerange", GeomSegment$draw_panel(data, panel_params, coord))
+ ggname("geom_linerange", GeomSegment$draw_panel(data, panel_params, coord, lineend = lineend))
}
)
diff --git a/R/geom-map.r b/R/geom-map.r
index 031e0c5b91..8690063fd3 100644
--- a/R/geom-map.r
+++ b/R/geom-map.r
@@ -105,7 +105,8 @@ geom_map <- function(mapping = NULL, data = NULL,
#' @usage NULL
#' @export
GeomMap <- ggproto("GeomMap", GeomPolygon,
- draw_panel = function(data, panel_params, coord, map) {
+ draw_panel = function(data, panel_params, coord, lineend = "butt",
+ linejoin = "round", linemitre = 10, map) {
# Only use matching data and map ids
common <- intersect(data$map_id, map$id)
data <- data[data$map_id %in% common, , drop = FALSE]
@@ -123,8 +124,12 @@ GeomMap <- ggproto("GeomMap", GeomPolygon,
polygonGrob(coords$x, coords$y, default.units = "native", id = grob_id,
gp = gpar(
- col = data$colour, fill = alpha(data$fill, data$alpha),
- lwd = data$size * .pt
+ col = data$colour,
+ fill = alpha(data$fill, data$alpha),
+ lwd = data$size * .pt,
+ lineend = lineend,
+ linejoin = linejoin,
+ linemitre = linemitre
)
)
},
diff --git a/R/geom-pointrange.r b/R/geom-pointrange.r
index 5b018c1253..834a4f9f8a 100644
--- a/R/geom-pointrange.r
+++ b/R/geom-pointrange.r
@@ -47,13 +47,13 @@ GeomPointrange <- ggproto("GeomPointrange", Geom,
GeomLinerange$setup_data(data, params)
},
- draw_panel = function(data, panel_params, coord, fatten = 4, flipped_aes = FALSE) {
+ draw_panel = function(data, panel_params, coord, lineend = "butt", fatten = 4, flipped_aes = FALSE) {
if (is.null(data[[flipped_names(flipped_aes)$y]]))
- return(GeomLinerange$draw_panel(data, panel_params, coord, flipped_aes = flipped_aes))
+ return(GeomLinerange$draw_panel(data, panel_params, coord, lineend = lineend, flipped_aes = flipped_aes))
ggname("geom_pointrange",
gTree(children = gList(
- GeomLinerange$draw_panel(data, panel_params, coord, flipped_aes = flipped_aes),
+ GeomLinerange$draw_panel(data, panel_params, coord, lineend = lineend, flipped_aes = flipped_aes),
GeomPoint$draw_panel(transform(data, size = size * fatten), panel_params, coord)
))
)
diff --git a/R/geom-polygon.r b/R/geom-polygon.r
index f44ae4d633..585b6e437d 100644
--- a/R/geom-polygon.r
+++ b/R/geom-polygon.r
@@ -106,7 +106,8 @@ geom_polygon <- function(mapping = NULL, data = NULL,
#' @usage NULL
#' @export
GeomPolygon <- ggproto("GeomPolygon", Geom,
- draw_panel = function(data, panel_params, coord, rule = "evenodd") {
+ draw_panel = function(data, panel_params, coord, rule = "evenodd", lineend = "butt",
+ linejoin = "round", linemitre = 10) {
n <- nrow(data)
if (n == 1) return(zeroGrob())
@@ -131,7 +132,10 @@ GeomPolygon <- ggproto("GeomPolygon", Geom,
col = first_rows$colour,
fill = alpha(first_rows$fill, first_rows$alpha),
lwd = first_rows$size * .pt,
- lty = first_rows$linetype
+ lty = first_rows$linetype,
+ lineend = lineend,
+ linejoin = linejoin,
+ linemitre = linemitre
)
)
)
@@ -159,7 +163,10 @@ GeomPolygon <- ggproto("GeomPolygon", Geom,
col = first_rows$colour,
fill = alpha(first_rows$fill, first_rows$alpha),
lwd = first_rows$size * .pt,
- lty = first_rows$linetype
+ lty = first_rows$linetype,
+ lineend = lineend,
+ linejoin = linejoin,
+ linemitre = linemitre
)
)
)
diff --git a/R/geom-rect.r b/R/geom-rect.r
index 95cf0383e6..aa490b27e8 100644
--- a/R/geom-rect.r
+++ b/R/geom-rect.r
@@ -33,7 +33,7 @@ GeomRect <- ggproto("GeomRect", Geom,
required_aes = c("xmin", "xmax", "ymin", "ymax"),
- draw_panel = function(self, data, panel_params, coord, linejoin = "mitre") {
+ draw_panel = function(self, data, panel_params, coord, lineend = "butt", linejoin = "mitre") {
if (!coord$is_linear()) {
aesthetics <- setdiff(
names(data), c("x", "y", "xmin", "xmax", "ymin", "ymax")
@@ -43,7 +43,7 @@ GeomRect <- ggproto("GeomRect", Geom,
poly <- rect_to_poly(row$xmin, row$xmax, row$ymin, row$ymax)
aes <- new_data_frame(row[aesthetics])[rep(1,5), ]
- GeomPolygon$draw_panel(cbind(poly, aes), panel_params, coord)
+ GeomPolygon$draw_panel(cbind(poly, aes), panel_params, coord, lineend = lineend, linejoin = linejoin)
})
ggname("bar", do.call("grobTree", polys))
@@ -61,9 +61,7 @@ GeomRect <- ggproto("GeomRect", Geom,
lwd = coords$size * .pt,
lty = coords$linetype,
linejoin = linejoin,
- # `lineend` is a workaround for Windows and intentionally kept unexposed
- # as an argument. (c.f. https://github.com/tidyverse/ggplot2/issues/3037#issuecomment-457504667)
- lineend = if (identical(linejoin, "round")) "round" else "square"
+ lineend = lineend
)
))
}
diff --git a/R/geom-ribbon.r b/R/geom-ribbon.r
index d2907e8150..8e7bd29570 100644
--- a/R/geom-ribbon.r
+++ b/R/geom-ribbon.r
@@ -104,7 +104,9 @@ GeomRibbon <- ggproto("GeomRibbon", Geom,
data
},
- draw_group = function(data, panel_params, coord, na.rm = FALSE, flipped_aes = FALSE, outline.type = "both") {
+ draw_group = function(data, panel_params, coord, lineend = "butt",
+ linejoin = "round", linemitre = 10, na.rm = FALSE,
+ flipped_aes = FALSE, outline.type = "both") {
data <- flip_data(data, flipped_aes)
if (na.rm) data <- data[stats::complete.cases(data[c("x", "ymin", "ymax")]), ]
data <- data[order(data$group), ]
@@ -158,7 +160,10 @@ GeomRibbon <- ggproto("GeomRibbon", Geom,
fill = alpha(aes$fill, aes$alpha),
col = if (is_full_outline) aes$colour else NA,
lwd = if (is_full_outline) aes$size * .pt else 0,
- lty = if (is_full_outline) aes$linetype else 1
+ lty = if (is_full_outline) aes$linetype else 1,
+ lineend = lineend,
+ linejoin = linejoin,
+ linemitre = linemitre
)
)
@@ -181,7 +186,11 @@ GeomRibbon <- ggproto("GeomRibbon", Geom,
gp = gpar(
col = aes$colour,
lwd = aes$size * .pt,
- lty = aes$linetype)
+ lty = aes$linetype,
+ lineend = lineend,
+ linejoin = linejoin,
+ linemitre = linemitre
+ )
)
ggname("geom_ribbon", grobTree(g_poly, g_lines))
diff --git a/R/geom-rug.r b/R/geom-rug.r
index 2180a4286a..68e46a17f8 100644
--- a/R/geom-rug.r
+++ b/R/geom-rug.r
@@ -88,7 +88,8 @@ geom_rug <- function(mapping = NULL, data = NULL,
GeomRug <- ggproto("GeomRug", Geom,
optional_aes = c("x", "y"),
- draw_panel = function(data, panel_params, coord, sides = "bl", outside = FALSE, length = unit(0.03, "npc")) {
+ draw_panel = function(data, panel_params, coord, lineend = "butt", sides = "bl",
+ outside = FALSE, length = unit(0.03, "npc")) {
if (!inherits(length, "unit")) {
abort("'length' must be a 'unit' object.")
}
@@ -108,7 +109,12 @@ GeomRug <- ggproto("GeomRug", Geom,
list(min = -1 * length, max = unit(1, "npc") + length)
}
- gp <- gpar(col = alpha(data$colour, data$alpha), lty = data$linetype, lwd = data$size * .pt)
+ gp <- gpar(
+ col = alpha(data$colour, data$alpha),
+ lty = data$linetype,
+ lwd = data$size * .pt,
+ lineend = lineend
+ )
if (!is.null(data$x)) {
if (grepl("b", sides)) {
rugs$x_b <- segmentsGrob(
diff --git a/R/geom-smooth.r b/R/geom-smooth.r
index 05bd1a8f29..5b94f4b070 100644
--- a/R/geom-smooth.r
+++ b/R/geom-smooth.r
@@ -139,7 +139,8 @@ GeomSmooth <- ggproto("GeomSmooth", Geom,
# ribbon won't be drawn either in that case, keeping the overall
# behavior predictable and sensible. The user will realize that they
# need to set `se = TRUE` to obtain the ribbon and the legend key.
- draw_group = function(data, panel_params, coord, se = FALSE, flipped_aes = FALSE) {
+ draw_group = function(data, panel_params, coord, lineend = "butt", linejoin = "round",
+ linemitre = 10, se = FALSE, flipped_aes = FALSE) {
ribbon <- transform(data, colour = NA)
path <- transform(data, alpha = NA)
@@ -149,7 +150,7 @@ GeomSmooth <- ggproto("GeomSmooth", Geom,
gList(
if (has_ribbon) GeomRibbon$draw_group(ribbon, panel_params, coord, flipped_aes = flipped_aes),
- GeomLine$draw_panel(path, panel_params, coord)
+ GeomLine$draw_panel(path, panel_params, coord, lineend = lineend, linejoin = linejoin, linemitre = linemitre)
)
},
diff --git a/R/geom-violin.r b/R/geom-violin.r
index daad68f4d0..fe8e710389 100644
--- a/R/geom-violin.r
+++ b/R/geom-violin.r
@@ -120,7 +120,7 @@ GeomViolin <- ggproto("GeomViolin", Geom,
params
},
- extra_params = c("na.rm", "orientation"),
+ extra_params = c("na.rm", "orientation", "lineend", "linejoin", "linemitre"),
setup_data = function(data, params) {
data$flipped_aes <- params$flipped_aes
diff --git a/R/geom-vline.r b/R/geom-vline.r
index 3c22e0b1c9..c92d34d8c4 100644
--- a/R/geom-vline.r
+++ b/R/geom-vline.r
@@ -44,7 +44,7 @@ geom_vline <- function(mapping = NULL, data = NULL,
#' @usage NULL
#' @export
GeomVline <- ggproto("GeomVline", Geom,
- draw_panel = function(data, panel_params, coord) {
+ draw_panel = function(data, panel_params, coord, lineend = "butt") {
ranges <- coord$backtransform_range(panel_params)
data$x <- data$xintercept
@@ -52,7 +52,7 @@ GeomVline <- ggproto("GeomVline", Geom,
data$y <- ranges$y[1]
data$yend <- ranges$y[2]
- GeomSegment$draw_panel(unique(data), panel_params, coord)
+ GeomSegment$draw_panel(unique(data), panel_params, coord, lineend = lineend)
},
default_aes = aes(colour = "black", size = 0.5, linetype = 1, alpha = NA),
diff --git a/R/legend-draw.r b/R/legend-draw.r
index 04266da417..ac02b97fea 100644
--- a/R/legend-draw.r
+++ b/R/legend-draw.r
@@ -49,7 +49,7 @@ draw_key_abline <- function(data, params, size) {
col = alpha(data$colour %||% data$fill %||% "black", data$alpha),
lwd = (data$size %||% 0.5) * .pt,
lty = data$linetype %||% 1,
- lineend = "butt"
+ lineend = params$lineend %||% "butt"
)
)
}
@@ -81,9 +81,7 @@ draw_key_polygon <- function(data, params, size) {
lty = data$linetype %||% 1,
lwd = lwd * .pt,
linejoin = params$linejoin %||% "mitre",
- # `lineend` is a workaround for Windows and intentionally kept unexposed
- # as an argument. (c.f. https://github.com/tidyverse/ggplot2/issues/3037#issuecomment-457504667)
- lineend = if (identical(params$linejoin, "round")) "round" else "square"
+ lineend = params$lineend %||% "butt"
))
}
@@ -105,7 +103,9 @@ draw_key_boxplot <- function(data, params, size) {
col = data$colour %||% "grey20",
fill = alpha(data$fill %||% "white", data$alpha),
lwd = (data$size %||% 0.5) * .pt,
- lty = data$linetype %||% 1
+ lty = data$linetype %||% 1,
+ lineend = params$lineend %||% "butt",
+ linejoin = params$linejoin %||% "mitre"
)
)
}
@@ -120,7 +120,9 @@ draw_key_crossbar <- function(data, params, size) {
col = data$colour %||% "grey20",
fill = alpha(data$fill %||% "white", data$alpha),
lwd = (data$size %||% 0.5) * .pt,
- lty = data$linetype %||% 1
+ lty = data$linetype %||% 1,
+ lineend = params$lineend %||% "butt",
+ linejoin = params$linejoin %||% "mitre"
)
)
}
@@ -141,7 +143,7 @@ draw_key_path <- function(data, params, size) {
%||% data$fill %||% "black", data$alpha),
lwd = (data$size %||% 0.5) * .pt,
lty = data$linetype %||% 1,
- lineend = "butt"
+ lineend = params$lineend %||% "butt"
),
arrow = params$arrow
)
@@ -155,7 +157,7 @@ draw_key_vpath <- function(data, params, size) {
col = alpha(data$colour %||% data$fill %||% "black", data$alpha),
lwd = (data$size %||% 0.5) * .pt,
lty = data$linetype %||% 1,
- lineend = "butt"
+ lineend = params$lineend %||% "butt"
),
arrow = params$arrow
)
@@ -168,7 +170,9 @@ draw_key_dotplot <- function(data, params, size) {
pch = 21,
gp = gpar(
col = alpha(data$colour %||% "black", data$alpha),
- fill = alpha(data$fill %||% "black", data$alpha)
+ fill = alpha(data$fill %||% "black", data$alpha),
+ lty = data$linetype %||% 1,
+ lineend = params$lineend %||% "butt"
)
)
}
@@ -227,7 +231,7 @@ draw_key_vline <- function(data, params, size) {
col = alpha(data$colour %||% data$fill %||% "black", data$alpha),
lwd = (data$size %||% 0.5) * .pt,
lty = data$linetype %||% 1,
- lineend = "butt"
+ lineend = params$lineend %||% "butt"
)
)
}
@@ -248,7 +252,8 @@ draw_key_timeseries <- function(data, params, size) {
col = alpha(data$colour %||% data$fill %||% "black", data$alpha),
lwd = (data$size %||% 0.5) * .pt,
lty = data$linetype %||% 1,
- lineend = "butt"
+ lineend = params$lineend %||% "butt",
+ linejoin = params$linejoin %||% "round"
)
)
}
diff --git a/tests/testthat/_snaps/aes/stat-count-width-0-5.svg b/tests/testthat/_snaps/aes/stat-count-width-0-5.svg
index e983a40604..75f21c1381 100644
--- a/tests/testthat/_snaps/aes/stat-count-width-0-5.svg
+++ b/tests/testthat/_snaps/aes/stat-count-width-0-5.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
diff --git a/tests/testthat/_snaps/aes/stat-count.svg b/tests/testthat/_snaps/aes/stat-count.svg
index c3f3abbb96..a0e4f01dfd 100644
--- a/tests/testthat/_snaps/aes/stat-count.svg
+++ b/tests/testthat/_snaps/aes/stat-count.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
diff --git a/tests/testthat/_snaps/aes/stat-identity-width-0-5.svg b/tests/testthat/_snaps/aes/stat-identity-width-0-5.svg
index e669375ed3..145618e608 100644
--- a/tests/testthat/_snaps/aes/stat-identity-width-0-5.svg
+++ b/tests/testthat/_snaps/aes/stat-identity-width-0-5.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
diff --git a/tests/testthat/_snaps/aes/stat-identity.svg b/tests/testthat/_snaps/aes/stat-identity.svg
index c7707bd82c..03ab4b2621 100644
--- a/tests/testthat/_snaps/aes/stat-identity.svg
+++ b/tests/testthat/_snaps/aes/stat-identity.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
diff --git a/tests/testthat/_snaps/coord-map/coord-map-switched-scale-position.svg b/tests/testthat/_snaps/coord-map/coord-map-switched-scale-position.svg
index 44b8697d86..3d5fa0b240 100644
--- a/tests/testthat/_snaps/coord-map/coord-map-switched-scale-position.svg
+++ b/tests/testthat/_snaps/coord-map/coord-map-switched-scale-position.svg
@@ -36,16 +36,16 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/coord-map/usa-mercator.svg b/tests/testthat/_snaps/coord-map/usa-mercator.svg
index de2a70c04f..c6a2038aba 100644
--- a/tests/testthat/_snaps/coord-map/usa-mercator.svg
+++ b/tests/testthat/_snaps/coord-map/usa-mercator.svg
@@ -36,16 +36,16 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/coord-polar/racetrack-plot-closed-and-has-center-hole.svg b/tests/testthat/_snaps/coord-polar/racetrack-plot-closed-and-has-center-hole.svg
index f92366fdaf..d5a1760e83 100644
--- a/tests/testthat/_snaps/coord-polar/racetrack-plot-closed-and-has-center-hole.svg
+++ b/tests/testthat/_snaps/coord-polar/racetrack-plot-closed-and-has-center-hole.svg
@@ -44,9 +44,9 @@
-
-
-
+
+
+
1
2
0/3
diff --git a/tests/testthat/_snaps/coord-polar/racetrack-plot-closed-and-no-center-hole.svg b/tests/testthat/_snaps/coord-polar/racetrack-plot-closed-and-no-center-hole.svg
index a920ac8382..56a632f253 100644
--- a/tests/testthat/_snaps/coord-polar/racetrack-plot-closed-and-no-center-hole.svg
+++ b/tests/testthat/_snaps/coord-polar/racetrack-plot-closed-and-no-center-hole.svg
@@ -44,9 +44,9 @@
-
-
-
+
+
+
1
2
0/3
diff --git a/tests/testthat/_snaps/coord-polar/rose-plot-with-has-equal-spacing.svg b/tests/testthat/_snaps/coord-polar/rose-plot-with-has-equal-spacing.svg
index ea6d713540..c9b4539265 100644
--- a/tests/testthat/_snaps/coord-polar/rose-plot-with-has-equal-spacing.svg
+++ b/tests/testthat/_snaps/coord-polar/rose-plot-with-has-equal-spacing.svg
@@ -44,9 +44,9 @@
-
-
-
+
+
+
A
B
C
diff --git a/tests/testthat/_snaps/draw-key/rectangle-and-dotplot-key-glyphs.svg b/tests/testthat/_snaps/draw-key/rectangle-and-dotplot-key-glyphs.svg
index b777379e15..50ab636187 100644
--- a/tests/testthat/_snaps/draw-key/rectangle-and-dotplot-key-glyphs.svg
+++ b/tests/testthat/_snaps/draw-key/rectangle-and-dotplot-key-glyphs.svg
@@ -64,11 +64,11 @@
z
-
+
-
+
-
+
a
b
c
diff --git a/tests/testthat/_snaps/draw-key/time-series-and-polygon-key-glyphs.svg b/tests/testthat/_snaps/draw-key/time-series-and-polygon-key-glyphs.svg
index 9f3f1b321c..e8e6e2e746 100644
--- a/tests/testthat/_snaps/draw-key/time-series-and-polygon-key-glyphs.svg
+++ b/tests/testthat/_snaps/draw-key/time-series-and-polygon-key-glyphs.svg
@@ -64,11 +64,11 @@
z
-
+
-
+
-
+
a
b
c
diff --git a/tests/testthat/_snaps/geom-boxplot/outlier-colours.svg b/tests/testthat/_snaps/geom-boxplot/outlier-colours.svg
index 9fe68765e5..c3fcba0018 100644
--- a/tests/testthat/_snaps/geom-boxplot/outlier-colours.svg
+++ b/tests/testthat/_snaps/geom-boxplot/outlier-colours.svg
@@ -30,20 +30,20 @@
-
-
+
+
-
-
+
+
-
-
+
+
@@ -68,20 +68,20 @@
factor(cyl)
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
4
6
8
diff --git a/tests/testthat/_snaps/geom-dotplot/2-na-values-bin-along-y-stack-center.svg b/tests/testthat/_snaps/geom-dotplot/2-na-values-bin-along-y-stack-center.svg
index 1dc6177a07..ee7f42c683 100644
--- a/tests/testthat/_snaps/geom-dotplot/2-na-values-bin-along-y-stack-center.svg
+++ b/tests/testthat/_snaps/geom-dotplot/2-na-values-bin-along-y-stack-center.svg
@@ -27,24 +27,24 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/2-na-values-dot-density-binning-binwidth-4.svg b/tests/testthat/_snaps/geom-dotplot/2-na-values-dot-density-binning-binwidth-4.svg
index 60d7a9c242..931ddb6bd0 100644
--- a/tests/testthat/_snaps/geom-dotplot/2-na-values-dot-density-binning-binwidth-4.svg
+++ b/tests/testthat/_snaps/geom-dotplot/2-na-values-dot-density-binning-binwidth-4.svg
@@ -27,24 +27,24 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/3-stackgroups-bin-y-histodot.svg b/tests/testthat/_snaps/geom-dotplot/3-stackgroups-bin-y-histodot.svg
index 98fb6ca6e1..b6b299a280 100644
--- a/tests/testthat/_snaps/geom-dotplot/3-stackgroups-bin-y-histodot.svg
+++ b/tests/testthat/_snaps/geom-dotplot/3-stackgroups-bin-y-histodot.svg
@@ -27,96 +27,96 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -143,11 +143,11 @@
x
-
+
-
+
-
+
A
B
C
diff --git a/tests/testthat/_snaps/geom-dotplot/3-stackgroups-dot-density-with-aligned-bins.svg b/tests/testthat/_snaps/geom-dotplot/3-stackgroups-dot-density-with-aligned-bins.svg
index 46d3c57a45..edc50a7707 100644
--- a/tests/testthat/_snaps/geom-dotplot/3-stackgroups-dot-density-with-aligned-bins.svg
+++ b/tests/testthat/_snaps/geom-dotplot/3-stackgroups-dot-density-with-aligned-bins.svg
@@ -27,96 +27,96 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -145,11 +145,11 @@
x
-
+
-
+
-
+
A
B
C
diff --git a/tests/testthat/_snaps/geom-dotplot/3-stackgroups-histodot.svg b/tests/testthat/_snaps/geom-dotplot/3-stackgroups-histodot.svg
index c5590ea87c..54ffd9c078 100644
--- a/tests/testthat/_snaps/geom-dotplot/3-stackgroups-histodot.svg
+++ b/tests/testthat/_snaps/geom-dotplot/3-stackgroups-histodot.svg
@@ -27,96 +27,96 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -145,11 +145,11 @@
x
-
+
-
+
-
+
A
B
C
diff --git a/tests/testthat/_snaps/geom-dotplot/basic-dotplot-with-dot-density-binning-binwidth-4.svg b/tests/testthat/_snaps/geom-dotplot/basic-dotplot-with-dot-density-binning-binwidth-4.svg
index 9cff877a24..fce6bcf822 100644
--- a/tests/testthat/_snaps/geom-dotplot/basic-dotplot-with-dot-density-binning-binwidth-4.svg
+++ b/tests/testthat/_snaps/geom-dotplot/basic-dotplot-with-dot-density-binning-binwidth-4.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/bin-along-y-stack-center.svg b/tests/testthat/_snaps/geom-dotplot/bin-along-y-stack-center.svg
index 88b364c02a..0797211f1b 100644
--- a/tests/testthat/_snaps/geom-dotplot/bin-along-y-stack-center.svg
+++ b/tests/testthat/_snaps/geom-dotplot/bin-along-y-stack-center.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/bin-along-y-stack-centerwhole-histodot.svg b/tests/testthat/_snaps/geom-dotplot/bin-along-y-stack-centerwhole-histodot.svg
index ebe5b625d3..1279678b43 100644
--- a/tests/testthat/_snaps/geom-dotplot/bin-along-y-stack-centerwhole-histodot.svg
+++ b/tests/testthat/_snaps/geom-dotplot/bin-along-y-stack-centerwhole-histodot.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/bin-along-y-stack-centerwhole.svg b/tests/testthat/_snaps/geom-dotplot/bin-along-y-stack-centerwhole.svg
index 195f4e2d30..ac56bcc32e 100644
--- a/tests/testthat/_snaps/geom-dotplot/bin-along-y-stack-centerwhole.svg
+++ b/tests/testthat/_snaps/geom-dotplot/bin-along-y-stack-centerwhole.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/bin-y-continous-x-axis-grouping-by-x.svg b/tests/testthat/_snaps/geom-dotplot/bin-y-continous-x-axis-grouping-by-x.svg
index 5081a3f5fb..b3a2cfb7a9 100644
--- a/tests/testthat/_snaps/geom-dotplot/bin-y-continous-x-axis-grouping-by-x.svg
+++ b/tests/testthat/_snaps/geom-dotplot/bin-y-continous-x-axis-grouping-by-x.svg
@@ -27,96 +27,96 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/bin-y-continous-x-axis-single-x-group.svg b/tests/testthat/_snaps/geom-dotplot/bin-y-continous-x-axis-single-x-group.svg
index a4ee53e833..ff735eed28 100644
--- a/tests/testthat/_snaps/geom-dotplot/bin-y-continous-x-axis-single-x-group.svg
+++ b/tests/testthat/_snaps/geom-dotplot/bin-y-continous-x-axis-single-x-group.svg
@@ -27,96 +27,96 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/bin-y-dodged-coord-flip.svg b/tests/testthat/_snaps/geom-dotplot/bin-y-dodged-coord-flip.svg
index e8bea27789..6207f07469 100644
--- a/tests/testthat/_snaps/geom-dotplot/bin-y-dodged-coord-flip.svg
+++ b/tests/testthat/_snaps/geom-dotplot/bin-y-dodged-coord-flip.svg
@@ -27,96 +27,96 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -153,11 +153,11 @@
x
-
+
-
+
-
+
A
B
C
diff --git a/tests/testthat/_snaps/geom-dotplot/bin-y-dodged.svg b/tests/testthat/_snaps/geom-dotplot/bin-y-dodged.svg
index 883307c0de..69382b9e60 100644
--- a/tests/testthat/_snaps/geom-dotplot/bin-y-dodged.svg
+++ b/tests/testthat/_snaps/geom-dotplot/bin-y-dodged.svg
@@ -27,96 +27,96 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -153,11 +153,11 @@
x
-
+
-
+
-
+
A
B
C
diff --git a/tests/testthat/_snaps/geom-dotplot/bin-y-dodging-3-stackgroups-histodot.svg b/tests/testthat/_snaps/geom-dotplot/bin-y-dodging-3-stackgroups-histodot.svg
index b93fe6d07c..627afeac6b 100644
--- a/tests/testthat/_snaps/geom-dotplot/bin-y-dodging-3-stackgroups-histodot.svg
+++ b/tests/testthat/_snaps/geom-dotplot/bin-y-dodging-3-stackgroups-histodot.svg
@@ -27,96 +27,96 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -141,9 +141,9 @@
g
-
+
-
+
A
B
bin y, dodging, 3 stackgroups, histodot
diff --git a/tests/testthat/_snaps/geom-dotplot/bin-y-three-x-groups-bins-aligned-across-groups.svg b/tests/testthat/_snaps/geom-dotplot/bin-y-three-x-groups-bins-aligned-across-groups.svg
index 96f941b067..0a2f39ef67 100644
--- a/tests/testthat/_snaps/geom-dotplot/bin-y-three-x-groups-bins-aligned-across-groups.svg
+++ b/tests/testthat/_snaps/geom-dotplot/bin-y-three-x-groups-bins-aligned-across-groups.svg
@@ -27,96 +27,96 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/bin-y-three-x-groups-bins-aligned-coord-flip.svg b/tests/testthat/_snaps/geom-dotplot/bin-y-three-x-groups-bins-aligned-coord-flip.svg
index 6204deb780..701a120557 100644
--- a/tests/testthat/_snaps/geom-dotplot/bin-y-three-x-groups-bins-aligned-coord-flip.svg
+++ b/tests/testthat/_snaps/geom-dotplot/bin-y-three-x-groups-bins-aligned-coord-flip.svg
@@ -27,96 +27,96 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/bin-y-three-x-groups-fill-and-dodge.svg b/tests/testthat/_snaps/geom-dotplot/bin-y-three-x-groups-fill-and-dodge.svg
index e2e5527d47..fb1dd6c537 100644
--- a/tests/testthat/_snaps/geom-dotplot/bin-y-three-x-groups-fill-and-dodge.svg
+++ b/tests/testthat/_snaps/geom-dotplot/bin-y-three-x-groups-fill-and-dodge.svg
@@ -27,96 +27,96 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -159,9 +159,9 @@
g
-
+
-
+
A
B
bin y, three x groups, fill and dodge
diff --git a/tests/testthat/_snaps/geom-dotplot/bin-y-three-x-groups-stack-centerwhole.svg b/tests/testthat/_snaps/geom-dotplot/bin-y-three-x-groups-stack-centerwhole.svg
index 184dd556f2..a782f80460 100644
--- a/tests/testthat/_snaps/geom-dotplot/bin-y-three-x-groups-stack-centerwhole.svg
+++ b/tests/testthat/_snaps/geom-dotplot/bin-y-three-x-groups-stack-centerwhole.svg
@@ -27,96 +27,96 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/dots-stacked-closer-stackratio-5-fill-white.svg b/tests/testthat/_snaps/geom-dotplot/dots-stacked-closer-stackratio-5-fill-white.svg
index 6112554a3e..49ab46365d 100644
--- a/tests/testthat/_snaps/geom-dotplot/dots-stacked-closer-stackratio-5-fill-white.svg
+++ b/tests/testthat/_snaps/geom-dotplot/dots-stacked-closer-stackratio-5-fill-white.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/facets-3-groups-histodot-stackgroups.svg b/tests/testthat/_snaps/geom-dotplot/facets-3-groups-histodot-stackgroups.svg
index 33a7b0c0e0..5c6d72c63b 100644
--- a/tests/testthat/_snaps/geom-dotplot/facets-3-groups-histodot-stackgroups.svg
+++ b/tests/testthat/_snaps/geom-dotplot/facets-3-groups-histodot-stackgroups.svg
@@ -27,36 +27,36 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -68,36 +68,36 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -109,36 +109,36 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -220,9 +220,9 @@
g
-
+
-
+
A
B
facets, 3 groups, histodot, stackgroups
diff --git a/tests/testthat/_snaps/geom-dotplot/histodot-binning-equal-bin-spacing.svg b/tests/testthat/_snaps/geom-dotplot/histodot-binning-equal-bin-spacing.svg
index 2d0906d883..9b77f25400 100644
--- a/tests/testthat/_snaps/geom-dotplot/histodot-binning-equal-bin-spacing.svg
+++ b/tests/testthat/_snaps/geom-dotplot/histodot-binning-equal-bin-spacing.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/larger-dots-dotsize-1-5-fill-white.svg b/tests/testthat/_snaps/geom-dotplot/larger-dots-dotsize-1-5-fill-white.svg
index 46696349be..b6571b96ff 100644
--- a/tests/testthat/_snaps/geom-dotplot/larger-dots-dotsize-1-5-fill-white.svg
+++ b/tests/testthat/_snaps/geom-dotplot/larger-dots-dotsize-1-5-fill-white.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/multiple-groups-bins-aligned.svg b/tests/testthat/_snaps/geom-dotplot/multiple-groups-bins-aligned.svg
index 186529d039..87ee8f32a6 100644
--- a/tests/testthat/_snaps/geom-dotplot/multiple-groups-bins-aligned.svg
+++ b/tests/testthat/_snaps/geom-dotplot/multiple-groups-bins-aligned.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -75,9 +75,9 @@
g
-
+
-
+
A
B
multiple groups, bins aligned
diff --git a/tests/testthat/_snaps/geom-dotplot/multiple-groups-bins-not-aligned.svg b/tests/testthat/_snaps/geom-dotplot/multiple-groups-bins-not-aligned.svg
index 89c5c95ebc..452fb01b01 100644
--- a/tests/testthat/_snaps/geom-dotplot/multiple-groups-bins-not-aligned.svg
+++ b/tests/testthat/_snaps/geom-dotplot/multiple-groups-bins-not-aligned.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -75,9 +75,9 @@
g
-
+
-
+
A
B
multiple groups, bins not aligned
diff --git a/tests/testthat/_snaps/geom-dotplot/stack-center-with-coord-flip.svg b/tests/testthat/_snaps/geom-dotplot/stack-center-with-coord-flip.svg
index 13432f057f..34f05a0dc5 100644
--- a/tests/testthat/_snaps/geom-dotplot/stack-center-with-coord-flip.svg
+++ b/tests/testthat/_snaps/geom-dotplot/stack-center-with-coord-flip.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/stack-center.svg b/tests/testthat/_snaps/geom-dotplot/stack-center.svg
index 9bda01b0c3..e6b4f3ea2b 100644
--- a/tests/testthat/_snaps/geom-dotplot/stack-center.svg
+++ b/tests/testthat/_snaps/geom-dotplot/stack-center.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/stack-centerwhole-with-coord-flip.svg b/tests/testthat/_snaps/geom-dotplot/stack-centerwhole-with-coord-flip.svg
index 51fc5d5ecb..bd3100d471 100644
--- a/tests/testthat/_snaps/geom-dotplot/stack-centerwhole-with-coord-flip.svg
+++ b/tests/testthat/_snaps/geom-dotplot/stack-centerwhole-with-coord-flip.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/stack-centerwhole.svg b/tests/testthat/_snaps/geom-dotplot/stack-centerwhole.svg
index 349635d4e9..c210702dc4 100644
--- a/tests/testthat/_snaps/geom-dotplot/stack-centerwhole.svg
+++ b/tests/testthat/_snaps/geom-dotplot/stack-centerwhole.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/stack-down-with-coord-flip.svg b/tests/testthat/_snaps/geom-dotplot/stack-down-with-coord-flip.svg
index e85720ceee..3e5936aee4 100644
--- a/tests/testthat/_snaps/geom-dotplot/stack-down-with-coord-flip.svg
+++ b/tests/testthat/_snaps/geom-dotplot/stack-down-with-coord-flip.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/stack-down.svg b/tests/testthat/_snaps/geom-dotplot/stack-down.svg
index b85943c371..0bc2a3283d 100644
--- a/tests/testthat/_snaps/geom-dotplot/stack-down.svg
+++ b/tests/testthat/_snaps/geom-dotplot/stack-down.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/stack-up-with-coord-flip.svg b/tests/testthat/_snaps/geom-dotplot/stack-up-with-coord-flip.svg
index 14ea4f7e97..8d7bf30ccd 100644
--- a/tests/testthat/_snaps/geom-dotplot/stack-up-with-coord-flip.svg
+++ b/tests/testthat/_snaps/geom-dotplot/stack-up-with-coord-flip.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/stack-up.svg b/tests/testthat/_snaps/geom-dotplot/stack-up.svg
index fc804fdbee..267c45aabd 100644
--- a/tests/testthat/_snaps/geom-dotplot/stack-up.svg
+++ b/tests/testthat/_snaps/geom-dotplot/stack-up.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-dotplot/variable-linetype-and-size-specified-as-aesthetics.svg b/tests/testthat/_snaps/geom-dotplot/variable-linetype-and-size-specified-as-aesthetics.svg
index 39d778d6db..dd470e13d0 100644
--- a/tests/testthat/_snaps/geom-dotplot/variable-linetype-and-size-specified-as-aesthetics.svg
+++ b/tests/testthat/_snaps/geom-dotplot/variable-linetype-and-size-specified-as-aesthetics.svg
@@ -27,26 +27,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -75,23 +75,23 @@
rep(c("a", "b"), length.out = nrow(dat))
-
+
-
+
a
b
rep(c(1, 2), length.out = nrow(dat))
-
+
-
+
-
+
-
+
-
+
1.00
1.25
1.50
diff --git a/tests/testthat/_snaps/geom-hline-vline-abline/cartesian-lines-intersect-mid-bars.svg b/tests/testthat/_snaps/geom-hline-vline-abline/cartesian-lines-intersect-mid-bars.svg
index 7626c78bb6..f76c20a281 100644
--- a/tests/testthat/_snaps/geom-hline-vline-abline/cartesian-lines-intersect-mid-bars.svg
+++ b/tests/testthat/_snaps/geom-hline-vline-abline/cartesian-lines-intersect-mid-bars.svg
@@ -27,11 +27,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-hline-vline-abline/flipped-lines-intersect-mid-bars.svg b/tests/testthat/_snaps/geom-hline-vline-abline/flipped-lines-intersect-mid-bars.svg
index 3f22659a78..bdda8286d6 100644
--- a/tests/testthat/_snaps/geom-hline-vline-abline/flipped-lines-intersect-mid-bars.svg
+++ b/tests/testthat/_snaps/geom-hline-vline-abline/flipped-lines-intersect-mid-bars.svg
@@ -27,11 +27,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-hline-vline-abline/polar-lines-intersect-mid-bars.svg b/tests/testthat/_snaps/geom-hline-vline-abline/polar-lines-intersect-mid-bars.svg
index 9ac5fc7739..66a7e87a17 100644
--- a/tests/testthat/_snaps/geom-hline-vline-abline/polar-lines-intersect-mid-bars.svg
+++ b/tests/testthat/_snaps/geom-hline-vline-abline/polar-lines-intersect-mid-bars.svg
@@ -36,11 +36,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/tests/testthat/_snaps/geom-polygon/basic-polygon-plot.svg b/tests/testthat/_snaps/geom-polygon/basic-polygon-plot.svg
index 01e2e01c6f..e1a2dc6d8b 100644
--- a/tests/testthat/_snaps/geom-polygon/basic-polygon-plot.svg
+++ b/tests/testthat/_snaps/geom-polygon/basic-polygon-plot.svg
@@ -27,8 +27,8 @@
-
-
+
+
diff --git a/tests/testthat/_snaps/geom-smooth/ribbon-turned-on-in-geom-smooth.svg b/tests/testthat/_snaps/geom-smooth/ribbon-turned-on-in-geom-smooth.svg
index f4e502e9be..429004d485 100644
--- a/tests/testthat/_snaps/geom-smooth/ribbon-turned-on-in-geom-smooth.svg
+++ b/tests/testthat/_snaps/geom-smooth/ribbon-turned-on-in-geom-smooth.svg
@@ -27,13 +27,13 @@
-
-
-
+
+
+
-
-
-
+
+
+
diff --git a/tests/testthat/_snaps/geom-violin/basic.svg b/tests/testthat/_snaps/geom-violin/basic.svg
index 7b7b48e8e1..206a6b4626 100644
--- a/tests/testthat/_snaps/geom-violin/basic.svg
+++ b/tests/testthat/_snaps/geom-violin/basic.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
diff --git a/tests/testthat/_snaps/geom-violin/continuous-x-axis-many-groups-center-should-be-at-2-0.svg b/tests/testthat/_snaps/geom-violin/continuous-x-axis-many-groups-center-should-be-at-2-0.svg
index 8ae2a01166..f737690144 100644
--- a/tests/testthat/_snaps/geom-violin/continuous-x-axis-many-groups-center-should-be-at-2-0.svg
+++ b/tests/testthat/_snaps/geom-violin/continuous-x-axis-many-groups-center-should-be-at-2-0.svg
@@ -27,7 +27,7 @@
-
+
diff --git a/tests/testthat/_snaps/geom-violin/continuous-x-axis-single-group-center-should-be-at-1-0.svg b/tests/testthat/_snaps/geom-violin/continuous-x-axis-single-group-center-should-be-at-1-0.svg
index be2909a5e3..f11a934abb 100644
--- a/tests/testthat/_snaps/geom-violin/continuous-x-axis-single-group-center-should-be-at-1-0.svg
+++ b/tests/testthat/_snaps/geom-violin/continuous-x-axis-single-group-center-should-be-at-1-0.svg
@@ -27,7 +27,7 @@
-
+
diff --git a/tests/testthat/_snaps/geom-violin/coord-flip.svg b/tests/testthat/_snaps/geom-violin/coord-flip.svg
index de956c3d0c..434afe96c8 100644
--- a/tests/testthat/_snaps/geom-violin/coord-flip.svg
+++ b/tests/testthat/_snaps/geom-violin/coord-flip.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
diff --git a/tests/testthat/_snaps/geom-violin/coord-polar.svg b/tests/testthat/_snaps/geom-violin/coord-polar.svg
index aaf695e14d..e70e3b11f3 100644
--- a/tests/testthat/_snaps/geom-violin/coord-polar.svg
+++ b/tests/testthat/_snaps/geom-violin/coord-polar.svg
@@ -36,9 +36,9 @@
-
-
-
+
+
+
A
B
C
diff --git a/tests/testthat/_snaps/geom-violin/dodging-and-coord-flip.svg b/tests/testthat/_snaps/geom-violin/dodging-and-coord-flip.svg
index 485b5db7d2..86a328e5b5 100644
--- a/tests/testthat/_snaps/geom-violin/dodging-and-coord-flip.svg
+++ b/tests/testthat/_snaps/geom-violin/dodging-and-coord-flip.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
@@ -54,11 +54,11 @@
x
-
+
-
+
-
+
A
B
C
diff --git a/tests/testthat/_snaps/geom-violin/dodging.svg b/tests/testthat/_snaps/geom-violin/dodging.svg
index 305199eb22..c1ccf480ce 100644
--- a/tests/testthat/_snaps/geom-violin/dodging.svg
+++ b/tests/testthat/_snaps/geom-violin/dodging.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
@@ -54,11 +54,11 @@
x
-
+
-
+
-
+
A
B
C
diff --git a/tests/testthat/_snaps/geom-violin/grouping-on-x-and-fill-dodge-width-0-5.svg b/tests/testthat/_snaps/geom-violin/grouping-on-x-and-fill-dodge-width-0-5.svg
index 85ac63dec4..17142781de 100644
--- a/tests/testthat/_snaps/geom-violin/grouping-on-x-and-fill-dodge-width-0-5.svg
+++ b/tests/testthat/_snaps/geom-violin/grouping-on-x-and-fill-dodge-width-0-5.svg
@@ -27,12 +27,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -53,9 +53,9 @@
g
-
+
-
+
e
f
grouping on x and fill, dodge width = 0.5
diff --git a/tests/testthat/_snaps/geom-violin/grouping-on-x-and-fill.svg b/tests/testthat/_snaps/geom-violin/grouping-on-x-and-fill.svg
index c74994eb8c..56049d8ef6 100644
--- a/tests/testthat/_snaps/geom-violin/grouping-on-x-and-fill.svg
+++ b/tests/testthat/_snaps/geom-violin/grouping-on-x-and-fill.svg
@@ -27,12 +27,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -53,9 +53,9 @@
g
-
+
-
+
e
f
grouping on x and fill
diff --git a/tests/testthat/_snaps/geom-violin/narrower-width-5.svg b/tests/testthat/_snaps/geom-violin/narrower-width-5.svg
index 0c0af24bef..d7a23e057b 100644
--- a/tests/testthat/_snaps/geom-violin/narrower-width-5.svg
+++ b/tests/testthat/_snaps/geom-violin/narrower-width-5.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
diff --git a/tests/testthat/_snaps/geom-violin/quantiles.svg b/tests/testthat/_snaps/geom-violin/quantiles.svg
index 1c8a03cc5d..8bec1ac1a6 100644
--- a/tests/testthat/_snaps/geom-violin/quantiles.svg
+++ b/tests/testthat/_snaps/geom-violin/quantiles.svg
@@ -27,15 +27,15 @@
-
+
-
+
-
+
diff --git a/tests/testthat/_snaps/geom-violin/scale-area-to-sample-size-c-is-smaller.svg b/tests/testthat/_snaps/geom-violin/scale-area-to-sample-size-c-is-smaller.svg
index a2fd1b9e99..1c0bf845b4 100644
--- a/tests/testthat/_snaps/geom-violin/scale-area-to-sample-size-c-is-smaller.svg
+++ b/tests/testthat/_snaps/geom-violin/scale-area-to-sample-size-c-is-smaller.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
diff --git a/tests/testthat/_snaps/geom-violin/with-smaller-bandwidth-and-points.svg b/tests/testthat/_snaps/geom-violin/with-smaller-bandwidth-and-points.svg
index 134a00178e..1494c6bd08 100644
--- a/tests/testthat/_snaps/geom-violin/with-smaller-bandwidth-and-points.svg
+++ b/tests/testthat/_snaps/geom-violin/with-smaller-bandwidth-and-points.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
diff --git a/tests/testthat/_snaps/geom-violin/with-tails-and-points.svg b/tests/testthat/_snaps/geom-violin/with-tails-and-points.svg
index d2b441c84d..1db22dd441 100644
--- a/tests/testthat/_snaps/geom-violin/with-tails-and-points.svg
+++ b/tests/testthat/_snaps/geom-violin/with-tails-and-points.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
diff --git a/tests/testthat/_snaps/guides/legend-inside-plot-bottom-left-of-legend-at-center.svg b/tests/testthat/_snaps/guides/legend-inside-plot-bottom-left-of-legend-at-center.svg
index 2e2cb20118..5f20c97519 100644
--- a/tests/testthat/_snaps/guides/legend-inside-plot-bottom-left-of-legend-at-center.svg
+++ b/tests/testthat/_snaps/guides/legend-inside-plot-bottom-left-of-legend-at-center.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
@@ -54,11 +54,11 @@
x
-
+
-
+
-
+
A
B
C
diff --git a/tests/testthat/_snaps/guides/legend-inside-plot-bottom-left.svg b/tests/testthat/_snaps/guides/legend-inside-plot-bottom-left.svg
index 62007709dd..ee8bca179c 100644
--- a/tests/testthat/_snaps/guides/legend-inside-plot-bottom-left.svg
+++ b/tests/testthat/_snaps/guides/legend-inside-plot-bottom-left.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
@@ -54,11 +54,11 @@
x
-
+
-
+
-
+
A
B
C
diff --git a/tests/testthat/_snaps/guides/legend-inside-plot-centered.svg b/tests/testthat/_snaps/guides/legend-inside-plot-centered.svg
index b6edb4bece..1e2b923306 100644
--- a/tests/testthat/_snaps/guides/legend-inside-plot-centered.svg
+++ b/tests/testthat/_snaps/guides/legend-inside-plot-centered.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
@@ -54,11 +54,11 @@
x
-
+
-
+
-
+
A
B
C
diff --git a/tests/testthat/_snaps/guides/legend-inside-plot-top-right.svg b/tests/testthat/_snaps/guides/legend-inside-plot-top-right.svg
index ab25b11b5c..520196a2ab 100644
--- a/tests/testthat/_snaps/guides/legend-inside-plot-top-right.svg
+++ b/tests/testthat/_snaps/guides/legend-inside-plot-top-right.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
@@ -54,11 +54,11 @@
x
-
+
-
+
-
+
A
B
C
diff --git a/tests/testthat/_snaps/guides/padding-in-legend-box.svg b/tests/testthat/_snaps/guides/padding-in-legend-box.svg
index 1ad20d0047..22861ac8bc 100644
--- a/tests/testthat/_snaps/guides/padding-in-legend-box.svg
+++ b/tests/testthat/_snaps/guides/padding-in-legend-box.svg
@@ -27,9 +27,9 @@
-
-
-
+
+
+
@@ -54,11 +54,11 @@
x
-
+
-
+
-
+
A
B
C
diff --git a/tests/testthat/_snaps/position-stack/area-stacking.svg b/tests/testthat/_snaps/position-stack/area-stacking.svg
index 7792c90d03..a8a8207726 100644
--- a/tests/testthat/_snaps/position-stack/area-stacking.svg
+++ b/tests/testthat/_snaps/position-stack/area-stacking.svg
@@ -27,10 +27,10 @@
-
-
-
-
+
+
+
+
@@ -51,9 +51,9 @@
category
-
+
-
+
A
B
Area stacking
diff --git a/tests/testthat/_snaps/scales-breaks-labels/functional-limits.svg b/tests/testthat/_snaps/scales-breaks-labels/functional-limits.svg
index 0e82d87623..e0c0a6ff98 100644
--- a/tests/testthat/_snaps/scales-breaks-labels/functional-limits.svg
+++ b/tests/testthat/_snaps/scales-breaks-labels/functional-limits.svg
@@ -27,18 +27,18 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -71,11 +71,11 @@
drv
-
+
-
+
-
+
4
f
r
diff --git a/tests/testthat/_snaps/stat-sum/summary-with-crossbars-manual-grouping.svg b/tests/testthat/_snaps/stat-sum/summary-with-crossbars-manual-grouping.svg
index 02ab3d0f35..ef35058862 100644
--- a/tests/testthat/_snaps/stat-sum/summary-with-crossbars-manual-grouping.svg
+++ b/tests/testthat/_snaps/stat-sum/summary-with-crossbars-manual-grouping.svg
@@ -59,12 +59,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/tests/testthat/_snaps/stat-sum/summary-with-crossbars-no-grouping.svg b/tests/testthat/_snaps/stat-sum/summary-with-crossbars-no-grouping.svg
index dc3bc16932..ba5fd95b1b 100644
--- a/tests/testthat/_snaps/stat-sum/summary-with-crossbars-no-grouping.svg
+++ b/tests/testthat/_snaps/stat-sum/summary-with-crossbars-no-grouping.svg
@@ -59,12 +59,12 @@
-
-
-
-
-
-
+
+
+
+
+
+