将两个变量粘贴在一起作为标题时,如何使部分分面标题加粗并换行?

问题描述 投票:0回答:1

我想改变一个具有格式化分面标题的列,然后我可以在

ggplot
facet_wrap
中使用它。我知道我需要使用plotmath,也许还需要使用bquote,但我无法让所有组件一起工作以产生所需的输出。我尝试了很多 bquote 和 atop 的组合,以及使用
~
.()
并将内容粘贴在一起,但没有运气。我知道您也可以使用
grob
,但输出是针织的 .Rmd。如果可能的话,我还想把顶部标题放大。

可重现的示例

library(ggplot2)
library(dplyr)

mpg_df <- mpg %>%
  select(year, manufacturer, model, cty, hwy) %>%
  filter(
    year == 1999 & manufacturer == "audi" & model == "a4 quattro" |
      year == 2008 &
      manufacturer == "dodge" & model == "ram 1500 pickup 4wd"
  ) %>%
  mutate(
    title = paste0(
      "bold('This is the manufacturer ",
      manufacturer,
      "')~\n'This is the model ",
      model,
      "'"
    )
  )

mpg_df %>%
  ggplot(aes(x = cty, y = hwy)) +
  geom_point() +
  facet_wrap( ~ title, labeller = label_parsed) +
  theme_classic()

enter image description here

但它们最终在同一条线上,我不知道如何工作

atop
,因为
\n
不适用于plotmath。

我尝试了很多其他的方法来

mutate
但没有运气,例如:

mutate(title = bquote(
          "atop(bold(This~is~the~manufacturer.(manufacturer)),
                This~is~the~model.(national))")

预期输出 enter image description here

r ggplot2 facet-wrap plotmath
1个回答
0
投票

使用

ggtext
您可以添加 markdown 或 html 语法来满足您的需求

library(ggplot2)
library(ggtext)
suppressPackageStartupMessages(library(dplyr))

mpg_df <- mpg %>%
  select(year, manufacturer, model, cty, hwy) %>%
  filter(
    year == 1999 & manufacturer == "audi" & model == "a4 quattro" |
      year == 2008 &
      manufacturer == "dodge" & model == "ram 1500 pickup 4wd"
  ) %>%
  mutate(
    title = paste0(
      "**This is the manufacturer ",
      manufacturer,"**",
      " <br>This is the model ",
      model
    )
  )

mpg_df %>%
    ggplot(aes(x = cty, y = hwy)) +
    geom_point() +
    facet_wrap(vars(title)) +
    theme_classic() +
  theme(strip.text = element_markdown())

创建于 2024-08-16,使用 reprex v2.1.1

© www.soinside.com 2019 - 2024. All rights reserved.