我想将情节的标题分为两行,但这不起作用,为什么?我怎样才能让它发挥作用?
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”让事情变得疯狂。
答案 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)
答案 2 :(得分:4)
实现此目的的一种方法是使用mtext
在主标题下添加额外的行,如下所示:
plot(1:10, main=bquote(paste("C=", .(CVal))))
mtext(bquote(paste(sum(xi), "=", .(SumEpsVal) )),side=3,line=0)
可能有一个更漂亮的解决方案,但也许这足以满足您的需求。