我想改变一个具有格式化分面标题的列,然后我可以在
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()
但它们最终在同一条线上,我不知道如何工作
atop
,因为\n
不适用于plotmath。
我尝试了很多其他的方法来
mutate
但没有运气,例如:
mutate(title = bquote(
"atop(bold(This~is~the~manufacturer.(manufacturer)),
This~is~the~model.(national))")
使用
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