将主标题分为两行

Giu*_*ppe 7 r plotmath

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

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

这在这里工作:

plot(1:10, main=paste("C=1", "\n", "SumXi=2"))
Run Code Online (Sandbox Code Playgroud)

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

BTW:

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

用"bla"让事情变得疯狂.

The*_*ras 12

就个人而言,我会像已经建议的那样使用mtext.但如果你真的希望它是一个单行,你可以bquote通过使用atop:"欺骗" :

plot(1:10, main=
  bquote(atop(paste("C=",.(CVal)), paste(sum(xi),"=",.(SumEpsVal)))))
Run Code Online (Sandbox Code Playgroud)

它甚至将两条线整齐地对准中心.


ags*_*udy 10

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

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

您确实需要单独创建和输出每一行.

例如 :

Lines <- list(bquote(paste("C=", .(CVal))),
              bquote(paste(sum(xi), "=", .(SumEpsVal))))
Run Code Online (Sandbox Code Playgroud)

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

mtext(do.call(expression, Lines),side=3,line=0:1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述