用向量绘制带有希腊符号的轴标签

6

我正在尝试将希腊符号作为轴标签绘制出来。由于要循环绘制多个不同刻度的图表,我想使用包含符号名称的向量,而不是在expression()中直接使用符号名称,这种方式可以正常工作:

x <- rnorm(10, 5,6)
y <- rnorm(10, 2,1)
xlab <- expression(paste(mu, "mol/mol"))
plot(x,y, xlab = xlab)

由于某些原因,我无法使用包含符号名称的向量替换“mu”:
k <- "mu"
xlab <- expression(paste(get(k), "mol/mol"))
plot(x,y, xlab = xlab)

我发现了一个类似的问题,但是对于希腊符号来说,适用于函数的方法似乎不起作用:

ylab <- substitute(paste(nn, "mol/mol"), list(nn=k))
xlab <- bquote(.(k) * "mol/mol")

plot(x,y, ylab = ylab, xlab = xlab)

我做错了什么?如何通过向量将希腊符号添加到坐标轴标签中?

表达式是一个原始函数。它不会评估其参数。 - vinux
1
这个问答有帮助吗? - fotNelton
@fotNelton:这个至少不会起作用:ylab <- do.call("expression", lapply(k, function(i) substitute(k * "mol/mol", list(k = i)))) - Mikko
2
请注意,问题实际上是因为 k = "mu" 是一个你想作为表达式解释的字符字符串。如果你使用 k = quote(mu),那么 xlab = bquote(.(k)*mol/mol) 就可以正常工作了。 - baptiste
@Largh:可能有一点误解。我的意思是指向使用“parse”的方法。 - fotNelton
1个回答

6

试试这个:

xlab = parse(text=paste(k, "*mol/mol"))

有人能解释一下为什么 * 是必要的以及它的作用是什么吗? - Henrik
1
?plotmath 表示它用于 x*y 中以“并列 x 和 y”的方式使用,即将它们连在一起(没有空格)。 - baptiste
1
~会添加空格,如果您需要的话 - Mikko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接