2

我正在尝试在 R 图中生成一个美丽的传说。我有一个factor=1e-5, 应该在图例中很好地格式化。我在包中发现了一个很好的函数sfsmisc,可以将数字转换为表达式。要将此表达式添加到我的 bquote 命令中,我似乎需要将其转换为调用。10^-5()不幸的是,在字符串 ( )的末尾添加了大括号。

有没有办法避免添加那些大括号?或者有没有更简单的方法将数字转换为 plotmaths 命令以便在图例中使用?(无需手动操作)

factor = 1e-5
alpha = 1:10
omega = alpha^2 * factor

plot (
  alpha
  , omega
  , xlab=bquote(alpha)
  , ylab=bquote(omega)
  , type="b"
  )

text = expression()

# standard version
text[1] = as.expression(bquote(alpha%*%.(factor)))

# beautified version (use pretty10exp from sfsmisc package!?)
library("sfsmisc")
pretty = as.call(pretty10exp(factor, drop.1=T))
text[1] = as.expression(bquote(alpha^2%*%.(pretty)))

# add legend
legend("topleft", legend=text, pch=1, lty=1)

屏幕截图:红色箭头指向不应该存在的大括号

4

1 回答 1

3

以下是您可以使用 function 执行的操作parse

text <- paste("alpha^2%*%",parse(text=pretty10exp(factor,drop.1=T)),sep="")
text
[1] "alpha^2%*%10^-5" # which we then use as the expression in your call to legend
legend("topleft", legend=parse(text=text), pch=1, lty=1)

请参阅?parse有关此工作原理的更多说明。

于 2013-03-08T10:08:11.980 回答