在 R 中的 ggplot 中使用停止、\and 等生成两行复杂的 y 轴标题

Producing two lines of complex y axis titles using atop, \n, etc in ggplot in R

我试图在 R 中的 ggplot 中的 y 轴标签中生成两行,其中第二行有一些相对复杂的文本,似乎很难在两行上打印。

在一行中,我使用 bquote:

使这个脚本打印得很好

图一:

ggplot(data = iris, aes(x = Sepal.Width, y = Sepal.Length)) + geom_point() + 
  ylab(bquote('Efflux ('*mu~ 'mol' ~CO[2]~ m^-2~s^-1*')')) 

并且,对于相对简单的文本,我可以使用 ylab 中的 \n 功能来生成两行:

图二:

ggplot(data = iris, aes(x = Sepal.Width, y = Sepal.Length)) + geom_point() + 
  ylab("Efflux \n Carbon Dioxide")

但是,尝试使用 bquote 中的 atop 功能,我一直在努力弄清楚如何使用逗号、引号等来正确打印这两行 y 轴标签:

ggplot(data = iris, aes(x = Sepal.Width, y = Sepal.Length)) + geom_point() + 
  ylab(bquote(atop("Efflux", ('*mu~ 'mol' ~CO[2]~ m^-2~s^-1*'))))

这会打印一个错误,我知道这与引号的位置有关。有没有人知道如何在两行上打印这个更复杂的文本?

您可以尝试使用 ggtext 包中的 element_markdown。这允许您使用 markdown(或 html)来生成您需要的换行符、符号、下标和上标,而无需求助于 bquote ,这在多行输入中很费力。您甚至可以用斜体显示单位,如本例所示:

library(ggplot2)
library(ggtext)

ggplot(data = iris, aes(x = Sepal.Width, y = Sepal.Length)) + 
  geom_point() + 
  ylab("Efflux<br><i>(&mu;mol CO<sub>2</sub> m<sup>-2</sup>s<sup>-1</sup>)</i>") +
  theme(axis.title.y = element_markdown())