连接绘图标题中的字符串和表达式
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$"))
【讨论】:
以上是关于连接绘图标题中的字符串和表达式的主要内容,如果未能解决你的问题,请参考以下文章