r - 在 r 中的轴上使用表达式(绘图)

标签 r plotmath

这很好用

data = c(1,3,2)
max_y <- max(data)
plot_colors <- c("blue")
plot(data, type="l", col=plot_colors[1], ylim=c(0,max_y), axes=FALSE, xlab=expression(e[3]))
axis(1, at=c(1,2,3),  lab=expression(e[1],e[2],e[3])  )

但我想从文件中读取 x 轴上的标签。我尝试了以下方法:

data = c(1,3,2)
names = vector("expression",3)
names[1] = "e[1]"
names[2] = "e[2]"
names[3] = "e[3]"
max_y <- max(data)
plot_colors <- c("blue")
plot(data, type="l", col=plot_colors[1], ylim=c(0,max_y), axes=FALSE, xlab=expression(e[3]))
axis(1, at=c(1,2,3),  lab=names  )

我试过替代品:

axis(1, at=c(1,2,3),  lab=substitute(expression(a), list(a="e[1],e[2],e[3]"))  )

但这也没有用。 有什么建议吗?

最佳答案

你想要的是?parse:

names = c('e[1]', 'e[2]', 'e[3]')
namesExp = do.call(c, lapply(names, function(x) parse(text = x)))
plot(c(1,3,2), type='l', col='blue', axes=FALSE, xlab = expression(e[3]))
axis(3, at=c(1,2,3), lab = names)
axis(1, at=c(1,2,3), lab = namesExp)

上面,lapply 返回一个表达式列表:

> print(lapply(names, function(x) parse(text = x)))
[[1]]
expression(e[1])
[[2]]
expression(e[2])
[[3]]
expression(e[3])

do.call 只是非递归地取消列出它(也可以使用 unlist(lapply(names, function(x) parse(text = x)), recursive = F)):

> print(do.call(c, lapply(names, function(x) parse(text = x))))
expression(e[1], e[2], e[3])

关于r - 在 r 中的轴上使用表达式(绘图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11438943/

相关文章:

r - R 图例中的多个 bquote 项

r - 在 R 中绘制包含 "approximately equal to"的文本

r - 关于 ggplot 注释的更好解决方案?

r - 找到点所在的州, `sf` r

r - 我收到类似 Error in if (file.access(phantompath, 1) < 0) { : argument is of length zero when I use Phantomjs(port = 4567l) 的错误

r - 将 Excel 公式转换为使用前一行结果的 R 代码

arrays - 数组操作给我合并表

r - directlabels geom_dl() 中的标签大小

r - 将 `expression()` 与 `\n` 结合

r - 使用 `plotmath` 显示下标和 `[ ]` 的组合