Latex和R中绘图标签的变量?

10

我该如何在R中使用Latex表达式中的变量?

比如:

plot(X, Y, main=expression(R^2))

将R插入一个漂亮的上标2作为主标题。

但是假设我想让它显示为“R^2: 0.5”,其中0.5来自于一个R变量。我该怎么做?

4个回答

14

Owen的技巧非常酷,但并不是通常的做法。如果使用bquote,这实际上相当容易。 bquotequote执行相同,唯一的区别是在.()之间的所有内容将在指定环境中进行评估(如果未指定任何内容,则在全局环境中进行评估)。

一个简单的例子:

X <- 1:10
Y <- 1:10
a <- 0.8
plot(X,Y,main=bquote(R^2 : .(a)))

给出:

enter image description here

更多的示例和可能性,请参见?bquote?plotmath


太棒了!我经常想要类似于bquote()的东西,但从未知道它的存在。 - Owen
好的,那很顺利。不过有点奇怪,混合使用latex和r变量这么麻烦。 - c00kiemonster
1
@c00kiemonster,R从来不是也不曾被设计成LaTeX处理器。R的plotmath功能必须在R语法和解析器的约定下工作。一旦你习惯了它,就会发现它比看起来要容易得多。 - Gavin Simpson

3

tikz和psfrag允许您使用实际的LaTeX代码和输出,而不是plotmath的,从而实现更好的排版一致性。

有关详细信息,请参见此问题。 将LaTeX引入R图


3

好的,这个有效...

call(':', quote(R^2), a)

尽管我觉得这有点取巧,因为它使用了 R 的 : 操作符,而你只想在末尾添加一些文本。也许有更好的方法?

2

@Joris提供的另一种变化是substitute()。你需要给substitute()一个表达式和一个环境或列表来评估这个表达式。通常传递一个列表是最容易的,尤其是像这里提出的这个问题。

plot(X,Y, main = substitute(R^2 : a, list(a = a)))

我们可以通过仅查看 substitute() 调用来了解为什么它有效:
> substitute(R^2 : a, list(a = a))
R^2:0.8

在表达式中的 a 会被替换为列表中 a 的值。

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