如何使用ggtext在小资本中编写轴tick?

发布于 2025-01-22 10:57:17 字数 1048 浏览 5 评论 0原文

我想使用ggtext :: Element_markDown()在小资本中编写轴tick。但是,诸如< span class ='font-variant:small-caps'> small Capital的尝试徒劳无功。那么,我应该如何实现这种效果?

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()
  )

I want to write axis ticks in small capital using ggtext::element_markdown(). However, an attempt like <span class='font-variant: small-caps'>small capital here!</span> is in vain. Then, how should I achieve that effect?

MWE

enter image description here

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()
  )

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

望笑 2025-01-29 10:57:17

不幸的是,font-variant属性不支持ggtext。根据[docs]( https://wilkelab.org.org.org.org.org/ggtext/articlest/articlect/articles/intrecticles/introduction。 html ):

目前支持CSS属性颜色,字体大小和字体家庭。

因此,实现所需的结果需要通过将字符串转换为大写并通过ggtext设置小字体大小来进行一些手动工作。

顺便说一句:样式是通过样式而不是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()
  )

Unfortunately the font-variant property is not supported by ggtext. According to the [docs] only (https://wilkelab.org/ggtext/articles/introduction.html):

The CSS properties color, font-size, and font-family are currently supported.

Hence achieving your desired result requires some manual work by converting your strings to uppercase and setting a small font size via ggtext.

BTW: The style is set via style not 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()
  )

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文