我试图在R的ggplot中的y轴标签中生成两行,其中第二行有一些相对复杂的文本,这似乎使得在两行上打印变得困难。
在一行代码中,我使用bquote命令可以很好地打印此脚本:
图1:
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特性来生成两行代码:
图2:
ggplot(data = iris, aes(x = Sepal.Width, y = Sepal.Length)) + geom_point() +
ylab("Efflux \n Carbon Dioxide")

但是,在尝试使用bquote中的顶部功能时,我一直在努力弄清楚如何使用逗号、引号等来正确打印这两行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*'))))这将打印一个错误,我知道这与引号的位置有关。有没有人知道如何在两行上打印这个更复杂的文本?
发布于 2021-06-02 01:12:59
您可以尝试使用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>(μmol CO<sub>2</sub> m<sup>-2</sup>s<sup>-1</sup>)</i>") +
theme(axis.title.y = element_markdown())

https://stackoverflow.com/questions/67793041
复制相似问题