From 52d9107fba02010280c5e88e0ee61c32bc66383c Mon Sep 17 00:00:00 2001 From: Teun van den Brand Date: Tue, 19 Mar 2024 18:09:05 +0100 Subject: [PATCH 1/3] Force `fill = NA` --- R/coord-.R | 4 +++- R/coord-polar.R | 4 ++-- R/coord-radial.R | 6 ++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/R/coord-.R b/R/coord-.R index dc7090c352..ced1257b42 100644 --- a/R/coord-.R +++ b/R/coord-.R @@ -65,7 +65,9 @@ Coord <- ggproto("Coord", labels }, - render_fg = function(panel_params, theme) element_render(theme, "panel.border"), + render_fg = function(panel_params, theme) { + element_render(theme, "panel.border", fill = NA) + }, render_bg = function(self, panel_params, theme) { cli::cli_abort("{.fn {snake_class(self)}} has not implemented a {.fn render_bg} method.") diff --git a/R/coord-polar.R b/R/coord-polar.R index 6c8b4813b4..e0712760fb 100644 --- a/R/coord-polar.R +++ b/R/coord-polar.R @@ -265,7 +265,7 @@ CoordPolar <- ggproto("CoordPolar", Coord, render_fg = function(self, panel_params, theme) { if (is.null(panel_params$theta.major)) { - return(element_render(theme, "panel.border")) + return(element_render(theme, "panel.border", fill = NA)) } arc <- self$start + c(0, 2 * pi) dir <- self$direction @@ -297,7 +297,7 @@ CoordPolar <- ggproto("CoordPolar", Coord, unit(0.45 * cos(theta) + 0.5, "native"), hjust = 0.5, vjust = 0.5 ), - element_render(theme, "panel.border") + element_render(theme, "panel.border", fill = NA) ) }, diff --git a/R/coord-radial.R b/R/coord-radial.R index 7f8b0eca47..4f2946f5f7 100644 --- a/R/coord-radial.R +++ b/R/coord-radial.R @@ -346,11 +346,13 @@ CoordRadial <- ggproto("CoordRadial", Coord, render_fg = function(self, panel_params, theme) { + border <- element_render(theme, "panel.border", fill = NA) + if (!self$r_axis_inside) { out <- grobTree( panel_guides_grob(panel_params$guides, "theta", theme), panel_guides_grob(panel_params$guides, "theta.sec", theme), - element_render(theme, "panel.border") + border ) return(out) } @@ -370,7 +372,7 @@ CoordRadial <- ggproto("CoordRadial", Coord, panel_guides_grob(panel_params$guides, "theta", theme), panel_guides_grob(panel_params$guides, "theta.sec", theme), left, right, - element_render(theme, "panel.border") + border ) }, From 34c29c37db21ed1c9e6204b0abfbddc5ee00f7c3 Mon Sep 17 00:00:00 2001 From: Teun van den Brand Date: Tue, 19 Mar 2024 18:12:59 +0100 Subject: [PATCH 2/3] remove superfluous `fill = NA` --- R/theme-defaults.R | 8 ++++---- R/theme.R | 2 +- man/theme.Rd | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/R/theme-defaults.R b/R/theme-defaults.R index 05260557e9..1190ed7b04 100644 --- a/R/theme-defaults.R +++ b/R/theme-defaults.R @@ -267,7 +267,7 @@ theme_bw <- function(base_size = 11, base_family = "", theme( # white background and dark border panel.background = element_rect(fill = "white", colour = NA), - panel.border = element_rect(fill = NA, colour = "grey20"), + panel.border = element_rect(colour = "grey20"), # make gridlines dark, same contrast with white as in theme_grey panel.grid = element_line(colour = "grey92"), panel.grid.minor = element_line(linewidth = rel(0.5)), @@ -301,7 +301,7 @@ theme_linedraw <- function(base_size = 11, base_family = "", # 0.5 clipped looks like 0.25 # pure black panel border and grid lines, but thinner - panel.border = element_rect(fill = NA, colour = "black", linewidth = rel(1)), + panel.border = element_rect(colour = "black", linewidth = rel(1)), panel.grid = element_line(colour = "black"), panel.grid.major = element_line(linewidth = rel(0.1)), panel.grid.minor = element_line(linewidth = rel(0.05)), @@ -335,7 +335,7 @@ theme_light <- function(base_size = 11, base_family = "", theme( # white panel with light grey border panel.background = element_rect(fill = "white", colour = NA), - panel.border = element_rect(fill = NA, colour = "grey70", linewidth = rel(1)), + panel.border = element_rect(colour = "grey70", linewidth = rel(1)), # light grey, thinner gridlines # => make them slightly darker to keep acceptable contrast panel.grid = element_line(colour = "grey87"), @@ -603,7 +603,7 @@ theme_test <- function(base_size = 11, base_family = "", legend.box.spacing = unit(2 * half_line, "pt"), panel.background = element_rect(fill = "white", colour = NA), - panel.border = element_rect(fill = NA, colour = "grey20"), + panel.border = element_rect(colour = "grey20"), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.spacing = unit(half_line, "pt"), diff --git a/R/theme.R b/R/theme.R index 62ac55f3c6..c6be2175a1 100644 --- a/R/theme.R +++ b/R/theme.R @@ -222,7 +222,7 @@ #' # Panels -------------------------------------------------------------------- #' #' p1 + theme(panel.background = element_rect(fill = "white", colour = "grey50")) -#' p1 + theme(panel.border = element_rect(linetype = "dashed", fill = NA)) +#' p1 + theme(panel.border = element_rect(linetype = "dashed")) #' p1 + theme(panel.grid.major = element_line(colour = "black")) #' p1 + theme( #' panel.grid.major.y = element_blank(), diff --git a/man/theme.Rd b/man/theme.Rd index 2709251fab..64ac7b10ea 100644 --- a/man/theme.Rd +++ b/man/theme.Rd @@ -405,7 +405,7 @@ p1 + theme(plot.background = element_rect(fill = "green")) # Panels -------------------------------------------------------------------- p1 + theme(panel.background = element_rect(fill = "white", colour = "grey50")) -p1 + theme(panel.border = element_rect(linetype = "dashed", fill = NA)) +p1 + theme(panel.border = element_rect(linetype = "dashed")) p1 + theme(panel.grid.major = element_line(colour = "black")) p1 + theme( panel.grid.major.y = element_blank(), From b9d949ba88701727e88d38317eb3ffb1755e574f Mon Sep 17 00:00:00 2001 From: Teun van den Brand Date: Tue, 19 Mar 2024 18:14:32 +0100 Subject: [PATCH 3/3] add news bullet --- NEWS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NEWS.md b/NEWS.md index a96a2e4b02..4ef4074dfa 100644 --- a/NEWS.md +++ b/NEWS.md @@ -26,6 +26,8 @@ * When legends detect the presence of values in a layer, `NA` is now detected if the data contains values outside the given breaks (@teunbrand, #5749). * `annotate()` now warns about `stat` or `position` arguments (@teunbrand, #5151) +* The `fill` of the `panel.border` theme setting is ignored and forced to be + transparent (#5782). # ggplot2 3.5.0