将主标题分为两行

时间:2013-01-03 08:44:44

标签: r plotmath

我想将情节的标题分为两行,但这不起作用,为什么?我怎样才能让它发挥作用?

CVal<-1 
SumEpsVal<-2 
plot(1:10, main=bquote(paste("C=", .(CVal), " \n ", sum(xi), "=", .(SumEpsVal) )))

这在这里有效:

plot(1:10, main=paste("C=1", "\n", "SumXi=2"))

我猜bquote出错了......(抬头?bquote) 我试图改变bqoute(where-argument)中的环境,但我不知道要采取哪种环境。

顺便说一句:

plot(1:10, main=bquote(paste("C=", .(CVal), "bla \n ", sum(xi), "=", .(SumEpsVal) )))

使用“bla”让事情变得疯狂。

3 个答案:

答案 0 :(得分:12)

我个人会按照建议使用mtext。但如果你真的希望它是一个单行,你可以使用bquote“欺骗”atop

plot(1:10, main=
  bquote(atop(paste("C=",.(CVal)), paste(sum(xi),"=",.(SumEpsVal)))))

它甚至将两条线整齐地对齐到中心。

答案 1 :(得分:10)

根本问题是plotmath不支持其中的换行符 要输出的表达式。

Control characters (e.g. \n) are not interpreted in character strings in plotmath, 
  unlike normal plotting.

你真的需要分别创建和输出每一行。

例如:

Lines <- list(bquote(paste("C=", .(CVal))),
              bquote(paste(sum(xi), "=", .(SumEpsVal))))

现在输出每一行列表中的文本转换为表达式do.call

mtext(do.call(expression, Lines),side=3,line=0:1)

enter image description here

答案 2 :(得分:4)

实现此目的的一种方法是使用mtext在主标题下添加额外的行,如下所示:

plot(1:10, main=bquote(paste("C=", .(CVal))))
mtext(bquote(paste(sum(xi), "=", .(SumEpsVal) )),side=3,line=0)

可能有一个更漂亮的解决方案,但也许这足以满足您的需求。