diff --git a/NEWS.md b/NEWS.md index 633a46172b..e9b8ad523e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -45,6 +45,8 @@ systems (@teunbrand, #4690). * `geom_tile()` computes default widths and heights per panel instead of per layer (@teunbrand, #5740). +* The `fill` of the `panel.border` theme setting is ignored and forced to be + transparent (#5782). # ggplot2 3.5.1 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 89c84dd5dc..b5ad621beb 100644 --- a/R/coord-radial.R +++ b/R/coord-radial.R @@ -357,11 +357,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) } @@ -381,7 +383,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 ) }, diff --git a/R/theme-defaults.R b/R/theme-defaults.R index 2066679533..6ecd6d68c0 100644 --- a/R/theme-defaults.R +++ b/R/theme-defaults.R @@ -269,7 +269,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)), @@ -303,7 +303,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)), @@ -337,7 +337,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"), @@ -612,7 +612,7 @@ theme_test <- function(base_size = 11, base_family = "", legend.box.spacing = rel(2), 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 = NULL, diff --git a/R/theme.R b/R/theme.R index f03d2a67ef..f151a316a7 100644 --- a/R/theme.R +++ b/R/theme.R @@ -226,7 +226,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 13a88a2e2a..5635049b5c 100644 --- a/man/theme.Rd +++ b/man/theme.Rd @@ -412,7 +412,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(),