使用 2 个变量的 facet_wrap 更改 strip.text 的颜色

Changing colour of strip.text using facet_wrap of 2 variables

请看下图并注意蓝色的条形文字(每张图的左上角)。

因为我在 2 个变量上使用了 facet_wrap,所以我希望底部条带文本为黑色,而顶部条带文本保持其 royalblue3 颜色。

我尝试使用 ggthemes,strip.text.x / strip.text.y 选项,但找不到如何执行此操作。

代码如下:

    ggplot(aes(Año, Valor, group = DEPP, color = DEPP)) +
  geom_line(size  = 1,
            alpha = 0.6 ) +
  geom_point(shape = 22, 
             size = 1.5, 
             fill = "grey") +
  theme_ipsum() +
  scale_y_continuous(labels = unit_format(unit = "S/", scale = 1)) +
  scale_x_discrete(breaks = c(2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021)) +
  theme(axis.title.y = element_blank(), 
        axis.title.x = element_blank()) + # Delete the title of the y and x axis
  labs(
    title = "Evolución Valor del Volumen de Producción Según Estado del Pescado y Órigen",      
    subtitle = "Valor de volumen (Kg equivalentes) registrado por la respectiva Dirección de Extracción y Procesamiento Pesquero (DEPP)",
    caption = "Fuente: DIREPRO"
  ) +
  guides(color = "none") +
  facet_wrap(DEPP ~reorder(EstadoPescado, -Valor), scales = "free_y", ncol = 3) +
  theme(strip.text.x = element_text(size = 11, colour = "royalblue3")) #Using ggthemes

  ggsave("desembarque_plot.png", 
         path = here("figures"), 
         width = 15*3, height = 8*10, 
         units = "cm")

实现您想要的结果的一个选择是使用 ggtext 包,它允许通过 markdown and/or HTML.[=14 设置文本标签和主题元素的样式=]

使用 mtcars 作为示例数据集:

library(ggplot2)
library(ggtext)

mtcars2 <- mtcars
mtcars2$cyl <- paste("<span style='color: royalblue3'>", mtcars2$cyl, "</span>")
mtcars2$am <- paste("<span style='color: black'>", mtcars2$am, "</span>")
ggplot(mtcars2, aes(hp, mpg)) +
  geom_point() +
  facet_wrap(cyl~am) +
  theme(strip.text = ggtext::element_markdown(size = 11))

我正在 ggh4x 的 github 版本上试验自定义条带。该功能尚未在 CRAN 上使用,但您可能会发现它很有用。主要思想是您可以为条带提供元素列表。公然模仿 stefan 的例子:

library(ggplot2)
library(ggh4x) # devtools::install_github("teunbrand/ggh4x")

ggplot(mtcars, aes(hp, mpg)) +
  geom_point() +
  facet_wrap2(
    cyl~am,
    strip = strip_themed(
      text_x = elem_list_text(colour = c("royalblue3", "black")),
      by_layer_x = TRUE
    )
  )

reprex package (v1.0.0)

于 2021-08-04 创建

(免责声明:我是作者 ggh4x。如果您发现任何错误,是时候报告它们了)