将表达式对象合并为 ggplot 标签的单个文本字符串

combine expression objects into a single text string for ggplot labels

我正在尝试在 ggplot 中创建标签,这些标签由字符向量和表达式组合成一个标签。我希望字符和表达式来自对象,以便我可以轻松地使用函数将它们交换为使用 ggplot 创建的不同图。

不幸的是,我缺乏组合存储在对象中的表达式所需的语法知识。我的情况描述如下:

library(ggplot2)

data(iris)

sup <- bquote(super^1)
sub <- bquote(sub[1])

ggplot() +
geom_point(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) +
labs(x = expression('Static text: '~sup~sub))

我尝试了 bquote()、quote()、substitute() 的组合,我尝试了 expression(paste('Main text', sup, sub)。我还尝试了 eval() 函数来查看如果它会强制将对象读取为表达式中的表达式。

由于我的语法知识有限,我不知道还有哪些其他选项可用。很难找到解释此类特定情况语法的高级 R 资源,因此堆栈溢出一直是我学习这些东西的地方。

我的主要目标是让它看起来像这样,但是从对象导入文本而不是直接写入表达式:

我们可以将它包装在 bquote

library(ggplot2)
ggplot() +
 geom_point(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) +
   labs(x = bquote('Static text: '~.(sup)~.(sub)))

-输出