如何以编程方式在 R 图中的 x 轴刻度上合并希腊符号?

问题描述 投票:0回答:1

似乎没有任何效果,我尝试过

parse
bquote
paste
等。还尝试了其他用户的其他问答。有一个使用
do.call
的答案对我来说也不起作用。

我最终用手写了它们,但这似乎不是很理想的情况,我觉得这应该很简单,但不知何故我无法让它们工作。我正在尝试在基础

R
中执行此操作,但如果有任何其他解决方案(例如
ggplot
)也应该有效。这是我的代码

n = 1e6
d_norm <- rnorm(n)
d_norm_den <- density(d_norm)
plot(d_norm_den, ylab = NA, lwd = 3, main = NA, xlab = NA, xaxt = "n")
mtext(text = "Empirical Rule", side = 3, line = 2, cex = 2, font = 4)
mtext(text = "(Normal distribution)", side = 3, line = 0.5, cex = 1.25, font = 1)
axis(side = 1, at = seq(-3,3), 
     labels = expression(mu*'-'*3*sigma,mu*'-'*2*sigma,mu*'-'*1*sigma,mu,mu*'+'*1*sigma,mu*'+'*2*sigma,mu*'+'*3*sigma))

它生成如下图

enter image description here

有什么方法可以在

labels
函数中自动创建这个
axis()
参数吗?

r
1个回答
0
投票

您可以使用

lapply
创建表达式列表

vals <- -3:3
labels <- as.expression(lapply(vals, function(x) 
  if (x==0) quote(mu) else if (x<0) bquote(mu-.(abs(x))*sigma) else bquote(mu+.(x)*sigma)))

然后将其与

一起使用
axis(side = 1, at = seq(-3,3), labels = labels)

一般情况似乎是更多字符,但应该扩展到其他范围。

© www.soinside.com 2019 - 2024. All rights reserved.