ggtext:element_markdown 不适用于 position = "top"

Posted

技术标签:

【中文标题】ggtext:element_markdown 不适用于 position = "top"【英文标题】:ggtext : element_markdown not working with position = "top" 【发布时间】:2021-07-30 23:56:21 【问题描述】:

我有一个图表(下面的简化示例),我想将 x 轴放在顶部。标签使用 element_markdown 来包含换行符。

在我添加似乎停止应用换行符的 position = "top" 之前,一切正常。你知道为什么吗?

这就是它应该的样子

并且将 position = "top" 的代码注释掉了。

library(tidyverse, ggtext)

periods <-c(1,2,3)
periodLabels <- c("Jan", "Feb<br>21", "Mar")
data <- data.frame(period = periods,
                   y = c(10, 20, 30))
ggplot(data, aes(period, y)) +
  geom_tile() +
  coord_cartesian(expand = FALSE) +
  # scales
  scale_x_continuous(breaks = periods,
                     labels = periodLabels#,
                     #position = "top"
  ) +
  theme_minimal(base_size = 5) +
  theme(
    axis.text.x = element_markdown(size = 8, lineheight = 1.05)
  )

【问题讨论】:

【参考方案1】:

您需要在theme 中指定正确的元素(现在axis.text.x.top):

periods <-c(1,2,3)
periodLabels <- c("Jan", "Feb<br>21", "Mar")
data <- data.frame(period = periods,
                   y = c(10, 20, 30))
ggplot(data, aes(period, y)) +
    geom_tile() +
    coord_cartesian(expand = FALSE) +
    # scales
    scale_x_continuous(breaks = periods,
                       labels = periodLabels,
                       position = "top"
    ) +
    theme_minimal(base_size = 5) +
    theme(
        axis.text.x.top = element_markdown(size = 8, lineheight = 1.05)
    )

【讨论】:

谢谢亚历克斯,这对我有用。如果有人知道为什么,那就太好了。 ggtext 会被关闭吗? 似乎是一个已知问题:您需要更改主题中的元素 (github.com/wilkelab/ggtext/issues/5)。我编辑了答案

以上是关于ggtext:element_markdown 不适用于 position = "top"的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在 ggtext 的轴标签中使用 png 徽标的代码不起作用

ggtext 格式被 ggsave 搞砸了

ggtext::geom_textbox:如何将链接显示为原始文本?

使用 ggtext 在标签中的两个单词之间添加空格

在 R 中使用 ggtext 和 gridtext 在 R 中具有跨越图例的多面板图

R语言ggplot2包和ggtext包在可视化图像中的指定位置添加文本框(横向文本框竖向文本框)