绘制正无穷大符号和负无穷大符号。

5
我想知道如何在图表中绘制正无穷符号和负无穷符号?
以下是我的R代码(但没有成功):
plot(1, ty ='n', ann = F, xlim = c(-4, 6), ylim = c(-3.5, 1.5) )

text(c(-4, 6 ), rep(1, 2), c( bquote(- infinity  ), bquote(infinity  ) ) ) 

我不是你的投票者,我发现你的问题很有趣,你尝试过运行两个单独的 text() 吗? - user7170429
@user138773,谢谢。但是我想让我的代码更简洁。还是谢谢。 - rnorouzian
1
根据?plotmath,请使用expression而不是bquotetext(c(-4, 6 ), rep(1, 2), c( expression(-infinity), expression(infinity) ) ) - alistaire
text(c(-4, 6 ), rep(1, 2), c( expression(-infinity ), bquote(infinity ) ) ) 成功。给 c 的第一项必须是一个真正的 R-expression-classed 项。 - IRTFM
2个回答

8

?plotmath 开始

如果在 R 中的文本绘制函数(text, mtext, axis, legend) 的 text 参数是一个表达式,那么该参数将被解释为数学表达式,并且输出将按照类似于 TeX 的规则进行格式化。

textlabels 参数被记录为:

一个字符向量或表达式,指定要写入的文本。尝试通过 as.character 将其他语言对象(名称和调用)强制转换为表达式,将向量和其他分类对象强制转换为字符向量。

(强调我的). bquote 实际上并不返回一个表达式(R 类,而不是概念),而是一个语言对象(特别是一个调用)。这导致了两个问题:

  • 因为 R 无法处理一组调用的向量,c 实际上并没有创建一个向量,而是将结果强制转换为列表,类似于将 c(sum, mean) 强制转换为列表,以及
  • 虽然 text 会将从 bquote 返回的调用本身强制转换为表达式(这将被正确解析),但它将列表强制转换为字符向量,这不会根据 plotmath 进行解释。

您可以使用 as.expression 显式地强制转换由 cbquote 生成的调用列表,但直接调用 expression 并避免使用 bquote 更快:

plot(1, ty ='n', ann = F, xlim = c(-4, 6), ylim = c(-3.5, 1.5))

text(c(-4, 6 ), rep(1, 2), expression(-infinity, infinity)) 

带有无限符号的图表

最后提一下,c 函数实际上可以对多个表达式进行操作 - 在某种程度上——因为 c(expression(-infinity), expression(infinity)) 返回 expression(-infinity, infinity)。与具有两个命名参数的 bquote 不同,expression 接受 ...,所以更容易只调用它一次并放入多个输入。


3

请尝试:

text(c(-4, 6 ), rep(1, 2), c( bquote("- \U221E"), bquote("\U221E") ) ) 

1
不需要使用 bquote - zx8754
你是对的。我刚才不经意地修改了OP的命令。没有反引号更好。 - G5W
这将取决于所使用的字体是否成功。它不像使用 expression(.) 的答案那样“安全”。 - IRTFM

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