在R中将希腊字母添加到轴刻度标签

7
我有我的坐标轴刻度:
axis(4,at=c(1.6526,1.9720,2.6009,3.3403),las=1)

现在我想给它们打标签。文本应该是这样的:
labels=c("alpha=0.1","alpha=0.05","alpha=0.01","alpha=.001")

但我希望alpha看起来像希腊字符。 谢谢!


2
可能是重复问题:https://dev59.com/CW025IYBdhLWcg3wX07z - Milo Wielondek
嗯,我有不止一个 expression(),所以我在想如何处理它们。 - mhartm
这与重复问题不同 - OP需要组合表达式向量。这也曾经被问过,但我现在找不到一个好的链接。 - Gavin Simpson
2个回答

8
您可以直接使用表达式,而不必使用paste
axis(4,at=c(0.75,1.75),labels=c(expression(alpha==0.1),expression(alpha==0.2)),las=1)

你可以通过一些额外的技巧自动完成这个操作。请查看我的答案了解其中一种方法。 - Gavin Simpson

5
手工制作一些标签是可以的,如果只有少量,但是这种方式很乏味且不自动化。有一些方法可以将个别表达式合并成一个表达式“向量”,我们可以自动构建个别表达式。以下是一种方法,我忘记是否还有其他方法,甚至不确定这是否是规范的方法(总的问题之前已经在StackOverflow上提出并回答了,包括我自己!但我在非常快的搜索中找不到它)。
op <- par(mar = c(5,4,4,6) + 0.1)
plot(1:10)
axis(1)
labs <- lapply(alpha, function(x) bquote(alpha == .(x)))
axis(4, at = seq(1, by = 2, length = 5),
     labels = do.call(expression, labs), las = 1)
par(op)

这产生了

在此输入图片描述

我将阶段分开以进行解释。第一个是

> labs <- lapply(alpha, function(x) bquote(alpha == .(x)))
> labs
[[1]]
alpha == 0.1

[[2]]
alpha == 0.05

[[3]]
alpha == 0.01

[[4]]
alpha == 0.005

[[5]]
alpha == 0.001

这将生成一个调用列表。

第二步是将它们组合成一个表达式,我使用 do.call()实现

> do.call(expression, labs)
expression(alpha == 0.1, alpha == 0.05, alpha == 0.01, alpha == 
    0.005, alpha == 0.001)

当然,您可以将它们组合使用:
labs <- do.call(expression, lapply(alpha, function(x) bquote(alpha == .(x))))
axis(4, at = seq(1, by = 2, length = 5),
     labels = labs, las = 1)

+1 example(plotmath) 中编写的第二个图形使用 substitute()for 循环中实现了这一点(即它使用了与您基本相同的策略)。 - Josh O'Brien

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