如何使用 ggtext 以小写字母写轴刻度?
How can I write axis ticks in small capital using ggtext?
我想使用 ggtext::element_markdown()
以小写字母写轴刻度。然而,像<span class='font-variant: small-caps'>small capital here!</span>
这样的尝试是徒劳的。那么,应该如何实现呢?
MWE
library(tidyverse)
tribble(
~ f1, ~ f2, ~ mean,
"a", "SBJ", 1212,
"a", "OBJ", 1313,
"p", "SBJ", 1515,
"p", "OBJ", 1616
) |>
mutate(
f2 = fct_relevel(
f2,
c(
"SBJ",
"OBJ"
)
)
) |>
ggplot(
aes(
x = f2,
y = mean,
fill = f1
)
) +
scale_x_discrete(
labels = c(
"NP <span class='font-variant: small-caps'>sbj</span>",
"NP <span class='font-variant: small-caps'>obj</span>"
)
) +
geom_col(
position = 'dodge',
size = 1
) +
theme(
axis.text.x = ggtext::element_markdown()
)
很遗憾,font-variant
属性 不受 ggtext
支持。仅根据 [docs] (https://wilkelab.org/ggtext/articles/introduction.html):
The CSS properties color, font-size, and font-family are currently supported.
因此,要实现您想要的结果需要一些手动操作,将您的字符串转换为大写并通过 ggtext
设置较小的字体大小。
顺便说一句:样式是通过 style
而不是 class
设置的。
ggplot(
df,
aes(
x = f2,
y = mean,
fill = f1
)
) +
scale_x_discrete(
labels = c(
glue::glue("NP <span style='font-size: 6pt;'>{toupper('sbj')}</span>"),
glue::glue("NP <span style='font-size: 6pt;'>{toupper('obj')}</span>")
)
) +
geom_col(
position = "dodge",
size = 1
) +
theme(
axis.text.x = ggtext::element_markdown()
)
我想使用 ggtext::element_markdown()
以小写字母写轴刻度。然而,像<span class='font-variant: small-caps'>small capital here!</span>
这样的尝试是徒劳的。那么,应该如何实现呢?
MWE
library(tidyverse)
tribble(
~ f1, ~ f2, ~ mean,
"a", "SBJ", 1212,
"a", "OBJ", 1313,
"p", "SBJ", 1515,
"p", "OBJ", 1616
) |>
mutate(
f2 = fct_relevel(
f2,
c(
"SBJ",
"OBJ"
)
)
) |>
ggplot(
aes(
x = f2,
y = mean,
fill = f1
)
) +
scale_x_discrete(
labels = c(
"NP <span class='font-variant: small-caps'>sbj</span>",
"NP <span class='font-variant: small-caps'>obj</span>"
)
) +
geom_col(
position = 'dodge',
size = 1
) +
theme(
axis.text.x = ggtext::element_markdown()
)
很遗憾,font-variant
属性 不受 ggtext
支持。仅根据 [docs] (https://wilkelab.org/ggtext/articles/introduction.html):
The CSS properties color, font-size, and font-family are currently supported.
因此,要实现您想要的结果需要一些手动操作,将您的字符串转换为大写并通过 ggtext
设置较小的字体大小。
顺便说一句:样式是通过 style
而不是 class
设置的。
ggplot(
df,
aes(
x = f2,
y = mean,
fill = f1
)
) +
scale_x_discrete(
labels = c(
glue::glue("NP <span style='font-size: 6pt;'>{toupper('sbj')}</span>"),
glue::glue("NP <span style='font-size: 6pt;'>{toupper('obj')}</span>")
)
) +
geom_col(
position = "dodge",
size = 1
) +
theme(
axis.text.x = ggtext::element_markdown()
)