Skip to contents

A style of strips with individually themed strips.


  clip = "inherit",
  size = "constant",
  text_x = NULL,
  text_y = NULL,
  background_x = NULL,
  background_y = NULL,
  by_layer_x = FALSE,
  by_layer_y = FALSE



A character(1) that controls whether text labels are clipped to the background boxes. Can be either "inherit" (default), "on" or "off".


A character(1) stating that the strip margins in different layers remain "constant" or are "variable".

text_x, text_y

A list() with element_text() elements. See details.

background_x, background_y

A list() with element_rect() elements. See details.

by_layer_x, by_layer_y

A logical(1) that when TRUE, maps the different elements to different layers of the strip. When FALSE, maps the different elements to individual strips, possibly repeating the elements to match the number of strips through rep_len().


A StripThemed ggproto object that can be given as an argument to facets in ggh4x.


With respect to the text_* and background_* arguments, they can be a list with (a mix of) the following objects:

  • NULL indicates that the global plot theme applies.

  • element_blank() omits drawing the background or text.

  • An element class object inheriting from the element_text or element_rect classes.

For constructing homogeneous lists of elements, the elem_list_text() and elem_list_rect() are provided for convenience.

See also

Other strips: strip_nested(), strip_split(), strip_vanilla()


# Some simple plot
p <- ggplot(mpg, aes(displ, hwy)) +

# Set some theming options, we can use `element_blank()`
backgrounds <- list(element_blank(), element_rect(fill = "dodgerblue"))
# Or we could use `NULL` to use the global theme
texts <- list(element_text(colour = "red"), NULL, element_text(face = "bold"))

# Elements are repeated until the fit the number of facets
p + facet_wrap2(
  vars(drv, year),
  strip = strip_themed(
    background_x = backgrounds,
    text_x = texts

# Except when applied to each layer instead of every strip
p + facet_wrap2(
  vars(drv, year),
  strip = strip_themed(
    background_x = backgrounds,
    text_x = texts,
    by_layer_x = TRUE

# To conveniently distribute arguments over a list of the same elements,
# you can use the following wrappers:
p + facet_wrap2(
  vars(drv, year),
  strip = strip_themed(
    text_x = elem_list_text(colour = c("blue", "red")),
    background_x = elem_list_rect(fill = c("white", "grey80")),
    by_layer_x = TRUE