7

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

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”做一些疯狂的事情。

4

3 回答 3

12

就我个人而言,我会按照已经建议的方式使用 mtext。但是,如果您真的希望它是单行的,则可以bquote使用以下方法“作弊” atop

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

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

于 2013-01-03T11:02:36.147 回答
11

根本问题是 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)

在此处输入图像描述

于 2013-01-03T10:46:47.330 回答
4

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

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

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

于 2013-01-03T10:22:01.997 回答