连接绘图标题中的字符串和表达式

Posted

技术标签:

【中文标题】连接绘图标题中的字符串和表达式【英文标题】:Concatenate strings and expressions in a plot's title 【发布时间】:2011-05-17 04:28:00 【问题描述】:

如何在绘图标题中结合文本和数学表达式。如果我使用粘贴,则表达式将转换为字符。例如我想要这样的东西作为标题

$S^2$ 的$ARL_1$ 曲线

谢谢

【问题讨论】:

【参考方案1】:

您想阅读?plotmath 以了解如何执行此类操作。这是一个例子:

plot(1:10, main = expression(ARL[1] ~ "curve for" ~ S^2))

[.] 是下标,而^ 是上标。 ~ 将表达式的各个部分隔开,就像有文字空格一样。

编辑:通常我会这样做:

plot(1:10, main = expression(ARL[1] ~ curve ~ for ~ S^2))

但这会引发错误,因为 for 被解释为 for() 循环调用的开始。

【讨论】:

如果您使用expression(ARL[1] ~ curve ~ "for" ~ S^2),第二个将起作用。 @Marek:哦,是的,同意。但是,如果您打算使用"for",您还不如使用"curve for",除非~ 和“”是不同数量的空间...? 当然。当需要混合更多字符串时,这在更复杂的情况下很重要。我将其添加为完整性;)另一方面,您也可以使用反引号`【参考方案2】:

您也可以使用bquote(paste(...)),它比expression 更灵活一点:您可以在带有.(x) 的标签中包含变量值(例如x 的值)。例如:

x<- 232323
plot(1:10, main = bquote(paste(ARL[1], " curve for ", S^2, "; x=",.(x))))

【讨论】:

是的,尽管我通常发现使用 plotmath 粘贴功能带来的困惑多于帮助。试试 > x plot(1:10, main = bquote(ARL[1]~"curve for"~S^2~";"~x==.(x))) +1 Dwin - 介绍paste 是一件很痛苦的事,但如果你把,"" 放在错误的地方... @GavinSimpson 是的,你的回答更好。但我认为最好指出一个更灵活的解决方案,以防有人来这里寻找更通用的解决方案。 +1 来自我。该评论并不是对您回答的实质性要点(bquote())的批评,只是在您可以避免的情况下在其中引入粘贴。 bquote() 未被充分利用且非常强大! .. 又是我的 1+。我认为 bquote 是一个很好的建议,并且在可能的情况下只添加了一个非常小的异议以避免粘贴,因为它经常与“其他粘贴”混淆。人们没有意识到这是一个不同的函数,具有不同的语义并且没有 sep 参数。【参考方案3】:

您还可以使用latex2exp::TeX 将 TeX 动态转换为表达式:

plot(cars, main = TeX("$ARL_1$ curve for $S^2$"))

【讨论】:

以上是关于连接绘图标题中的字符串和表达式的主要内容,如果未能解决你的问题,请参考以下文章

在 JSX 表达式中连接字符串和 HTML

Access 不能表示连接子字符串的连接表达式

EL中的字符串连接[重复]

加入两个表,文件名有额外的字符串,正则表达式从文件名中删除字符串并进行连接

忽略正则表达式中的撇号[重复]

Java中的基本运算符