为基本 R 绘图格式化文本的函数

问题描述

使用斜体/粗体/换行符等格式在基本 R plot() 中指定文本通常涉及以下一项或多项功能

paste()
expression()
atop()
substitute()
italic()

对于这些功能间的差异以及何时最好地应用它们,是否有直观的解释?

解决方法

您所指的是 plotmath 语法。

首先,让我们明确表示,要这样解释 plotmath 表达式,您告诉 R 它是一个“表达式”,这就是您需要 expression() 的原因。

因此,任何时候您想要使用特殊符号或格式,例如 italic()atop(),它实际上都是 plotmath 的一部分,因此您需要将其包装在表达式中。例如:

plot(0,main = expression(atop(over,italic(under))))

plot1

如果您尝试过 ?italic?atop,您可能已经注意到它会将您直接带到 plotmath 手册页,其中列出了许多其他函数。

substitute() 怎么样?那么在我之前的示例中,您会注意到我直接使用字符串来编写“over”和“under”,而没有将它们放在引号中。这是因为特殊的 expression() 环境。 因此,如果您需要将 inside 中的任何内容放入文本中的变量(而不是变量名称),那么您可以将表达式放入 substitute() 并为其提供参数。例如:

plot(0,main = substitute(atop(oo,italic(under))),list(oo='over2')))

plot2

请注意,我们不会在表达式块周围放置替换,而是将其完全替换。

最后,paste() 是从哪里来的?好吧,粘贴是与 plotmath 未处理的任何文本的粘合剂(双关语)。

因此,如果您需要在数学符号(或格式化文本)之前或之后的文本,您可以在表达式(或替代)环境中paste() 一起。例如:

plot(0,main = substitute(paste("b4",atop(oo,italic(under)),aft),list(oo='over',aft = 'after3')))

enter image description here

和以前一样,如果要粘贴变量的内容,则需要替换。


而且 Voilà 这就是您需要的大部分情节数学!

对于任何其他符号或函数,请查看 ?plotmath