使用bquote在R中的两行传奇

时间:2016-10-21 16:21:18

标签: r plot legend

我想使用bquote绘制图例,但是在我的图例中添加两行时遇到问题。例如:

这有效:

plot(1:10)
r2=0.99
legend("topleft",legend=bquote(R^{2} ~ "="  ~.(r2)),bty = "n")

enter image description here

但如果我添加第二行:

plot(1:10)
r2=0.99
pval=0.01
legend("topleft",legend=c(bquote(R^{2} ~ "="  ~.(r2)),paste("P-value =",pval)),bty = "n")

传奇中我的矢量的第一个元素是“扩展”。那是为什么?

enter image description here

2 个答案:

答案 0 :(得分:2)

这是因为$ cat /sys/class/net/$(ip route show default | awk '/default/ {print $5}')/address - 函数无法连接c返回的对象类型的多个实例。大多数人认为bquote返回R表达式,但事实并非如此。它返回调用,并且它们不会连接到列表中。您需要将bquote函数应用于多次调用expression返回的项目,以使它们进入“表达式”列表。托马斯·拉姆利(Thomas Lumley)于2005年在瑞尔普(Rhelp)解释了这一点:

bquote

enter image description here

如果您想要将此参数构建为图例,则可以使用另一种方法,即允许将表达式与legend("topleft",legend=do.call( 'expression', list( bquote( R^{2} == .(r2)), bquote( "P-value" == .(pval))) ), bty = "n") 一起串联。重新定义bquote以返回表达式:

c()

答案 1 :(得分:1)

我设法通过以下方式制作出您想要的东西:

textleg <- substitute(atop(paste(R^2==k),
                           plain(P-value)==j), list(k = r2, j=pval))
legend("topleft",legend=textleg,bty = "n")

enter image description here

编辑:

@ 42-提出建议添加引号会将我的减号转为“P值”&#39;连字符:

enter image description here