r - 将带有指数的数字转换为 R 中美丽图例的绘图命令

标签 r plot legend exp plotmath

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

有没有办法避免添加这些大括号?或者是否有一种更简单的方法将数字转换为绘图数学命令以在图例中使用? (无需手动执行)

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)

screenshot: red arrow points at the braces that should not be there

最佳答案

以下是您可以使用函数 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

关于r - 将带有指数的数字转换为 R 中美丽图例的绘图命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15290417/

相关文章:

r - 如何在data.table中引用以数字开头的列名

r - 根据位置向量拆分数据帧

r - 绘制两个不同的数据框,按一个或多个变量分组,在图例中使用不同的标签

python - 在图例文本中与 Latex 一起使用 matplotlib 散点标记

r - RStudio 升级 1.0.44 后 opts_knit$set(root.dir = path) 不起作用

r - 如何用R中的行均值估算缺失值

python - 在 Matplotlib 中删除楔形极坐标图周围的空间

图中的 R 等级点

r - 如何移动 image.plot 中的垂直色带图例

r - ggplot2 中两个图例的共同边界